填空题
门牌制作
#include<bits/stdc++.h>
using namespace std;
int cnt=0;
int main(){
for(int i=1;i<=2020;i++){
int x=i;
while(x){
int t=x%10;
if(t==2) cnt++;
x/=10;
}
}
printf("%d",cnt);
return 0;
}
624
既约分数
#include<bits/stdc++.h>
using namespace std;
int gcd(int a,int b){
if(b==0) return a;
else return gcd(b,a%b);
}
int cnt;
int main(){
for(int i=1;i<=2020;i++){
for(int j=1;j<=2020;j++){
//if(i==j) continue; //感觉这个地方有些歧义,不知道2/2,3/3是不是属于分数
if(gcd(i,j)==1) cnt++;
}
}
printf("%d",cnt);
return 0;
}
2481215
蛇形填空
没着急直接写代码,发现规律第n行n列的数字应该是 n^2 * (n-1)^2
计算机直接算出答案,7961
跑步锻炼
#include<bits/stdc++.h>
using namespace std;
int main(){
int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int y,m,d,w;
y=2000,m=1,d=1,w=6;
int ans=0;
while(1){
if(d==1||w==1) ans+=2;
else ans+=1;
d++;
w++;
if(w==8) w=1;
if(m==2){
int leap=(y%400==0||y%4==0&&y%100!=0);
if(d>month[2]+leap){
m++;
d=1;
}
}else{
if(d>month[m]){
m++;
d=1;
}
}
if(m==13){
y++;
m=1;
d=1;
}
if(y==2020&&m==10&&d==1){
printf("%d",ans+2); //第一天没有被算
break;
}
}
return 0;
}
8879
七段码
摆烂
编程题
成绩统计
#include<iostream>
#include<algorithm>
using namespace std;
int cnt1,cnt2;
int main(){
int n;
double s1,s2;
int sum1,sum2;
scanf("%d",&n);
int t=n;
for(int i=1;i<=n;i++){
int x;
scanf("%d",&x);
if(x>=60) cnt1++;
if(x>=85) cnt2++;
}
s1=cnt1*1.0/t*1.0;
s2=cnt2*1.0/t*1.0;
s1*=100;
s2*=100;
sum1=round(s1);
sum2=round(s2);
printf("%d%% %d%%",sum1,sum2);
return 0;
}
回文日期
#include<bits/stdc++.h>
using namespace std;
int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
bool check(int x){
int y=x/10000;
int m=(x%10000)/100;
int d=x%100;
if(m==0||m>=13) return false;
if(m!=2&&d>days[m]) return false;
int leap=(y%400==0)||(y%4==0&&y%100!=0);
if(m==2){
if(d>days[2]+leap) return false;
}
return true;
}
bool check2(int x){
string s;
while(x){
int t=x%10;
x/=10;
t+='0';
s+=t;
}
reverse(s.begin(),s.end());
//cout<<s<<endl;
if(s[0]==s[2]&&s[2]==s[5]&&s[5]==s[7]&&s[1]==s[3]&&s[3]==s[4]&&s[4]==s[6]) return true;
return false;
}
int main(){
int year;
int data1;
int flag=0;
scanf("%d",&year);
for(int i=0;i<10000;i++){
data1=i;
int x=i;
int data2=i;
for(int j=0;j<4;j++){
data1=data1*10+(x%10);
x/=10;
}
if(data1>year&&check(data1)&&!flag){
printf("%d\n",data1);
flag=1;
}
if(data1>year&&check(data1)&&check2(data1)){
printf("%d\n",data1);
break;
}
}
return 0;
}
子串分值和
#include<bits/stdc++.h>
using namespace std;
//菜鸡过50
string a;
typedef long long LL;
LL ans;
int main(){
cin>>a;
for(int i=0;i<a.size();i++){
unordered_set<char> s;
for(int j=i;j<a.size();j++){
s.insert(a[j]);
ans+=s.size();
}
}
cout<<ans;
return 0;
}