A 门牌制作
【思路】
将数值各位提取出来看是否等于2 类似于2021年省赛第一场数的组成
【代码】
#include <bits/stdc++.h>
using namespace std;
int check(int i){
int num=0;
while(i){
if(i%10==2) num++;
i=i/10;
}
return num;
}
int main()
{
int count=0;
for(int i=1;i<=2020;i++){
count+=check(i);
}
cout<<count<<endl;
return 0;
}
【答案】624
B 既约分数
【思路】
使用gcd()最大公约数函数遍历1-2020
【代码】
#include <bits/stdc++.h>
using namespace std;
int gcd(int a,int b){
if (b==0) return a;
else return(b,a%b);
}
int main(){
int count=0;
for(int i=1;i<=2020;i++){
for(int j=1;j<=2020;j++){
if(gcd(i,j)==1) count++;
}
}
cout<<count<<endl;
return 0;
}
【答案】2481215
C 蛇形填数
【思路】
① excel表格一个个写出来 费时间
② 找规律 :第一行第一列 1
第二行第二列 5
第三行第三列 13
……
由此可见 第n行第n列 2*n*n+*n+1
【代码】
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
cout<<2*n*n - 2 * n + 1 << endl;
return 0;
}
【答案】761
D 跑步锻炼
【思路】
求出2000-1-1 到2020-10-1 的总天数 (记得判断闰年)再加上多跑一千米的天数即为答案
【代码】
#include <bits/stdc++.h>
using namespace std;
int judge(int i){
if((i%4==0&&i%100!=0)||(i%400==0))
return 1;
else return 0;
}
int month [13][2]={{0,0},{31,31},{28,29},{31,31},{30,30},{31,31},{30,30},{31,31},{31,31},{30,30},{31,31},{30,30},{31,31}}; //存储闰年和非闰年的每月天数
int main(){
int y1,y2,m1,m2,d1,d2,week;
int count=0;
cin>>y1,m1,d1,week;
cin>>y2>>m2>>d2;
while(!((y1==y2)&&(m1==m2)&&(d1==d2))){
d1++;
week++;
count++;
if(d1==month[judge(y1)][m1]+1){
d1=1;
m1++;
}
if(m1>12){
y1++;
m1=1;
}
if((m1==1)||(week%7==1)) count++;
}
cout<<count+1<<endl;
return 0;
}
【答案】8879
E 七段码
【思路】
暂未看懂 此思路来自网络:
一共七个灯管,状态压缩枚举所有状态,然后dfs(深度搜索)搜一下是否连通。
【答案】80
F 成绩统计
【思路】
输入n for循环 如果满足条件 就记下 及格率=及格人数/总人数*100%
使用round()四舍五入
【代码】
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,score,pass=0,fine=0;
cin>>n;
for(int i=0;i<n;i++){
cin>>score;
if(score>=60) pass++;
if(score>=85) fine++;
}
cout<<round((float)paas/n*100)<<"%"<endl;
cout<<round((float)fine/n*100)<<"%"<endl;
return 0;
}
G 回文日期
【思路】
回文数的判断
进一步判断ABABBABA型的回文数
H 子串分值和
I 平面切分
J 字串排序
【思路】