@[toc]
????????????
????????????Hello,大家好我是[上进小菜猪],一个有趣的全栈博主,欢迎关注,多多关照????????????
????????????欢迎大家找我合作学习(文末有VX与公众号 想进学习交流群or学习资料or一起刷题 欢迎++)????????????
????????????苟怀四方志,所在可游盘,一起加油进步!????????????
????????????
一,煤球数目
标签:2016 省赛 填空
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
有一堆煤球,堆成三角棱锥形。具体: 第一层放 11 个, 第二层 33 个(排列成三角形), 第三层 66 个(排列成三角形), 第四层 1010 个(排列成三角形), .... 如果一共有 100100 层,共有多少个煤球?
运行限制
最大运行时间:1s
最大运行内存: 128M
答案:
171700
分析:
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;
}
笔记:递归手动全排列模板。
四,END
????????????关注作者,持续阅读作者的文章,一起学习更多知识!
????????????
如果有更优解法及其思路,欢迎讨论。