【蓝桥杯c++与Python每日练习】每日刷题day4:煤球数目,生日蜡烛,凑算式

@[toc]
????????????
????????????Hello,大家好我是[上进小菜猪],一个有趣的全栈博主,欢迎关注,多多关照????????????
????????????欢迎大家找我合作学习(文末有VX与公众号 想进学习交流群or学习资料or一起刷题 欢迎++)????????????
????????????苟怀四方志,所在可游盘,一起加油进步!????????????
????????????

一,煤球数目

标签:2016 省赛 填空

题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

有一堆煤球,堆成三角棱锥形。具体: 第一层放 11 个, 第二层 33 个(排列成三角形), 第三层 66 个(排列成三角形), 第四层 1010 个(排列成三角形), .... 如果一共有 100100 层,共有多少个煤球?

运行限制
最大运行时间:1s
最大运行内存: 128M

答案:
171700

分析:
【蓝桥杯c++与Python每日练习】每日刷题day4:煤球数目,生日蜡烛,凑算式
c++代码解法:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a=1,sum=1;
    for(int i=2;i<=100;i++)
    {
        a=a+i;
        sum+=a;
    }
    cout<<sum<<endl;
}

python代码解法:

a=1
sum=1
for i in range(2,101):
    a=a+i
    sum=sum+a
print(sum)

总结:
送分题,颇为简单。

二,生日蜡烛

标签:2016 省赛 填空

题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

某君从某年开始每年都举办一次生日 partyparty,并且每次都要吹熄与年龄相同根数的蜡烛。

现在算起来,他一共吹熄了 236236 根蜡烛。

请问,他从多少岁开始过生日 partyparty 的?

请输出他开始过生日 partyparty 的年龄数。

运行限制
最大运行时间:1s
最大运行内存: 128M

答案:26

c++代码解法:

#include<bits/stdc++.h>
using namespace std;


int main()
{
    int sum=0;
    for(int i=1;i<=100;i++)
    {
        sum=0;
        for(int j=i;j<=100;j++)
        {
            sum+=j;
            if(sum==236)
            {
                cout<<i<<endl;
            }
        }
    }
}

python代码解法:

sum=0
for i in range(1,101):
    sum=0
    for j in range(i,101):
        sum=sum+j
        if(sum==236):
            print(i)

总结:简单枚举题,直接暴力

三,凑算式

标签:2016 省赛 填空

题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

     B      DEF
A + --- + ------- = 10
     C      GHI

这个算式中 A ~ I 代表 0 ~ 9 的数字,不同的字母代表不同的数字。

比如:
6+8/3+952/7146+8/3+952/714 就是一种解法, 5+3/1+972/4865+3/1+972/486是另一种解法。

这个算式一共有多少种解法?

运行限制 最大运行时间:1s 最大运行内存: 128M

答案:

答案:29

c++暴力解法:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int sum=0;
    int a,b,c,d,e,f,g,h,i;
    for(a=1;a<10;a++)
    {
        for(b=1;b<10;b++)
        {
            for(c=1.0;c<10;c++)
            {
                 for(d=1;d<10;d++)
                 {
                     for(e=1;e<10;e++)
                     {
                         for(f=1;f<10;f++)
                         {
                             for(g=1;g<10;g++)
                             {
                                 for(h=1;h<10;h++)
                                 {
                                     for(i=1;i<10;i++)
                                    {
                                        int m=g*100+h*10+i;
                                        int n=d*100+e*10+f;
                                        if((a+(b/c)+n/m==10)&&(((b*n)%(c*m))==0)&&(a!=b&&a!=c&&a!=d&&a!=e&&a!=f&&a!=g&&a!=h&&a!=i&&b!=c&&b!=d&&b!=e&&b!=f&&b!=g&&b!=h&&b!=i&&c!=d&&c!=e&&c!=f&&c!=g&&c!=h&&c!=i&&d!=e&&d!=f&&d!=g&&d!=h&&d!=i&&e!=f&&e!=g&&e!=h&&e!=i&&f!=g&&f!=h&&f!=i&&g!=h&&g!=i&&h!=i)&&((g*100+h*10+i)!=0))
                                            {

                                                sum++;
                                                //cout<<a<<b<<c<<d<<e<<f<<g<<h<<i<<endl;
                                            }
                                    }
                                 }

                             }

                         }

                     }

                 }

            }

        }

    }

    cout<<sum<<endl;
}

c++采用全排列(next_permutation)解法:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a[11]={1,2,3,4,5,6,7,8,9},sum=0;

    while(next_permutation(a,a+9))
    {

        if((a[0]+1.0*a[1]/a[2]+(1.0*100*a[3]+10*a[4]+a[5])/(100*a[6]+10*a[7]+a[8]))==10)
        {
        sum++;
        }
    }
    cout<<sum<<endl;
return 0;
}

笔记:递归手动全排列模板。
【蓝桥杯c++与Python每日练习】每日刷题day4:煤球数目,生日蜡烛,凑算式

四,END

????????????关注作者,持续阅读作者的文章,一起学习更多知识!
????????????

如果有更优解法及其思路,欢迎讨论。

上一篇:【蓝桥杯c++与Python每日练习】每日刷题day3:牌型种数,移动距离


下一篇:基于docker实现snowflake算法的优化