#include <stdio.h>
#include <stdlib.h>
int count;
void Count_2(int x)
{
while(x!=0)
{
if(x%10==2)
count++;
x/=10;
}
}
int main()
{
int i;
for(i=1;i<=2020;i++)
Count_2(i);
printf("%d",count);
return 0;
}
答案:624
#include <stdio.h>
#include <stdlib.h>
int gcd(int x,int y)
{
int r;
while(y!=0)
{
r=x%y;
x=y;
y=r;
}
return x;
}
int main()
{
int i,j,count=0;
for(i=1;i<=2020;i++)
for(j=1;j<=2020;j++)
if(gcd(i,j)==1)
count++;
printf("%d",count);
return 0;
}
答案:2481215
#include <stdio.h>
#include <stdlib.h>
int main()
{
long long int a[100][300],num=1,i,j;
for(i=0;i<50;i++)
{
if(i==0 ||i%2==0)
a[i][0]=num++;
else
a[0][i]=num++;
for(j=1;j<i;j++)
{
if(i%2==0)
a[i-j][j]=num++;
else
a[j][i-j]=num++;
}
if(i!=0 && i%2==0)
a[0][i]=num++;
else if(i!=0)
a[i][0]=num++;
}
printf("%d\n",a[5][0]);
printf("ans:%d\n",a[19][19]);
return 0;
}
答案:761
#include <stdio.h>
#include <stdlib.h>
int M[13]={0,31,0,31,30,31,30,31,31,30,31,30,31};
int main()
{
int day=6,sum=0,i,j,k;
for(i=2000;i<=2020;i++)
{
if(i%400==0 || (i%4==0 && i%100!=0))
M[2]=29;
else M[2]=28;
for(j=1;j<=12;j++)
{
for(k=1;k<=M[j];k++)
{
if(k==1 || day==1)
sum+=2;
else
sum+=1;
if(++day==8)
day=1;
if(i==2020 && j==10 && k==1)
{
printf("%d",sum);
return 0;
}
}
}
}
return 0;
}
答案:8879
#include <stdio.h>
#include <stdlib.h>
//利用book进行标记,book的标记是不可恢复意指当过起点的点,当过起点的点不可在下一个起点的dfs中被连通
int arc[8][8];
int vis[8];
int book[8];
int count;
void DFS(int start)
{
int i;
if(start==7)
{
count+=2;
return;
}
for(i=1;i<=7;i++)
if(arc[start][i] && !vis[i] && !book[i])
{
count++;
vis[i]=1;
DFS(i);
vis[i]=0;
}
}
int main()
{
arc[1][2]=arc[1][6]=1;
arc[2][1]=arc[6][1]=1;
arc[2][3]=arc[2][7]=1;
arc[3][2]=arc[7][2]=1;
arc[3][4]=arc[3][7]=1;
arc[4][3]=arc[7][3]=1;
arc[4][5]=arc[5][4]=1;
arc[5][6]=arc[5][7]=1;
arc[6][5]=arc[7][5]=1;
arc[6][7]=arc[7][6]=1;
for(int i=1;i<7;i++)
{
book[i]=1;
DFS(i);
}
printf("%d",count);
return 0;
}
答案:80
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,grade;
scanf("%d",&n);
int good=0,ok=0;
for(int i=0;i<n;i++)
{
scanf("%d",&grade);
if(grade>=60)
{
ok++;
if(grade>=85)
good++;
}
}
double j=(double)ok/n,you=(double)good/n;
int ji=(int)(j*100+0.5),youxiu=(int)(you*100+0.5);
printf("%d%%\n%d%%",ji,youxiu);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int temp[10],month[13]={0,31,0,31,30,31,30,31,31,30,31,30,31};
int isPal(int x)
{
int count=0;
while(x!=0)
{
temp[count++]=x%10;
x/=10;
}
for(int i=0;i<count/2;i++)
if(temp[i]!=temp[count-1-i])
return 0;
return 1;
}
int check(int x)
{
int year=temp[4]+temp[5]*10+temp[6]*100+temp[7]*1000;
int m=temp[2]+temp[3]*10;
int d=temp[0]+temp[1]*10;
if(m>12 || m<1)
return 0;
if(year%400==0 || (year%4==0 && year%100!=0))
month[2]=29;
else
month[2]=28;
if(d>month[m] || d<1)
return 0;
return 1;
}
int main()
{
int n;
int ans1,ans2,flag=0,i;
scanf("%d",&n);
for(i=n+1;;i++)
{
if(isPal(i))
{
if(check(i))
{
ans1=i;
if(temp[0]==temp[2] && temp[1]==temp[3] && temp[1]!=temp[0])
{
ans2=i;
flag++;
}
break;
}
}
}
if(!flag)
{
for(i=ans1+1;;i++)
{
if(isPal(i))
if(check(i))
if(temp[0]==temp[2] && temp[1]==temp[3] && temp[1]!=temp[0])
{
ans2=i;
flag++;
break;
}
}
}
printf("%d\n%d\n",ans1,ans2);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define M 1000
int count_str(char *str)
{
int count=0,flag[256]={0},i;
for(i=0;str[i]!='\0';i++)
{
int n=str[i];
if(!flag[n])
{
count++;
flag[n]=1;
}
}
return count;
}
int main()
{
int ans=0;
char str[M],temp[M];
scanf("%s",str);
int len=strlen(str);
int i,j;
for(i=0;i<len;i++)
for(j=i;j<len;j++)
{
strncpy(temp,str+i,j-i+1);
temp[j-i+1]='\0';
ans+=count_str(temp);
}
printf("%d",ans);
return 0;
}