A:门牌制作
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝要为一条街的住户制作门牌号。
这条街一共有 20202020 位住户,门牌号从 11 到 20202020 编号。
小蓝制作门牌的方法是先制作 00 到 99 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、0、1、7,即需要 1 个字符 0,2 个字符 1,1 个字符 7。
请问要制作所有的 1到 2020 号门牌,总共需要多少个字符 2?
运行限制
最大运行时间:1s
最大运行内存: 128M
填空题,挨个遍历,送分题,要把握住;
#include <iostream> using namespace std; int ans; int main() { for(int i=1;i<=2020;i++){ int c=i; while(c){ int a=c%10; if(a==2){ ans++; } c=c/10; } } cout<<ans; return 0; }
B:既约分数
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
如果一个分数的分子和分母的最大公约数是 1,这个分数称为既约分数。
例如43,81,17, 都是既约分数。
请问,有多少个既约分数,分子和分母都是 1 到 2020 之间的整数(包括 1和 2020)?
运行限制
最大运行时间:2s
最大运行内存: 128M
没啥说的,遍历就行了,才2020个数;
#include <iostream> using namespace std; int gcd(int a,int b){ return b==0?a:gcd(b,a%b); //最大公约数 } int main() { int ans=0; for(int i=1;i<=2020;i++){ for(int j=1;j<=2020;j++){ if(gcd(i,j)==1){ ans++; } } } cout<<ans; return 0; }
C:蛇形填数
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
如下图所示,小明用从 11 开始的正整数“蛇形”填充无限大的矩阵。
1 2 6 7 15 ... 3 5 8 14 ... 4 9 13 ... 10 12 ... 11 ... ...
...
容易看出矩阵第二行第二列中的数是 5。请你计算矩阵中第 20 行第 20列的数是多少?
运行限制
最大运行时间:1s
最大运行内存: 128M
找规律,每次增加4*(i-1),i为行列数,第二行第二列就是1+4*1=5,三就是5+4*2=13,以此类推,实在不行挨个列出来都行,so easy;
#include <iostream> using namespace std; int main() { int sum=1; for(int i=1;i<20;i++){ sum=sum+i*4; } cout<<sum; return 0; }
D:七段码
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝要用七段码数码管来表示一种特殊的文字。
上图给出了七段码数码管的一个图示,数码管中一共有 77 段可以发光的二 极管,分别标记为 a,b,c,d,e,f,g。
小蓝要选择一部分二极管(至少要有一个)发光来表达字符。在设计字符 的表达时,要求所有发光的二极管是连成一片的。
例如:b 发光,其他二极管不发光可以用来表达一种字符。
例如 c 发光,其他二极管不发光可以用来表达一种字符。这种方案与上 一行的方案可以用来表示不同的字符,尽管看上去比较相似。
例如:a,b,c,d,e 发光,f,g 不发光可以用来表达一种字符。
例如:b,f 发光,其他二极管不发光则不能用来表达一种字符,因为发光 的二极管没有连成一片。
请问,小蓝可以用七段码数码管表达多少种不同的字符?
运行限制
最大运行时间:1s
最大运行内存: 128M
总通过次数: 6415 | 总提交次数: 7026 | 通过率: 91.3%
难度: 简单 标签: 填空题, 2020, 省赛
其实啊我感觉数一下用的时间更少
#include <iostream> #include <algorithm> #include <set> using namespace std; set<string> num; int c[4][2]={{-1,0},{0,-1},{1,0},{0,1}}; string a[3]; int d[5][5]; int ans; void dfs(int x,int y,string r){ d[x][y]--; for(int i=0;i<4;i++){ int tx=x+c[i][0]; int ty=y+c[i][1]; if(tx>=0&&tx<3&&ty>=0&&ty<3&&d[tx][ty]!=0&&a[tx][ty]!='*'){ sort(r.begin(),r.end()); num.insert(r); if(d[1][1]==1&&tx==1&&ty==1){ dfs(tx,ty,r); } else{ dfs(tx,ty,r+a[tx][ty]); } num.insert(r); } } d[x][y]++; } int main() { for(int i=0;i<3;i++){ for(int j=0;j<3;j++){ d[i][j]=1; } } d[1][1]=2; a[0]="abb"; a[1]="fgc"; a[2]="eed"; for(int i=0;i<3;i++){ for(int j=0;j<3;j++){ if(a[i][j]!='*'){ string r=""; r+=a[i][j]; dfs(i,j,r); } } } // for(set<string>::iterator it=num.begin();it!=num.end();it++){ // cout<<*it<<endl; // } cout<<num.size()/2; return 0; }