- P-0002
- P-0003
- P-0007
- P-0027
- P-0028
- P-0029
- P-0030
- P-0031
- P-0032
- P-0041
- P-0043
- P-0045
- P-0046
- P-0049
- P-0050
- P-0051
- P-0052
- P-0053
- P-0054
- P-0056
- P-0063
- P-0064
- P-0066
- P-0068
- P-0087
- P-0093
- P-0094
- P-0097
- P-0098
- P-0099
- P-0101
- P-0112
- P-0114&P-0116
- P-0146
- P-0147
- P-0149
- P-0150
- P-0151
- P-0155
- P-0156
- P-0157
- P-0161
- P-0177
- P-0183
- P-0185
- P-0189
- P-0196
- P-0249
- P-0298
- P-0299
- P-0300
- P-0301
- P-0302
- 最后
#includeint main(){ unsigned int n; unsigned int count=0; unsigned int a; scanf("%d",&n); int num[1000]; for(int i=0;i P-0003 #includeP-0007int main(){ int n,i,j,k,t,min; scanf("%d",&n); int a[1000],b[999]; for(i=0;i a[j]) k=j; if(k!=i){ t=a[i]; a[i]=a[k]; a[k]=t; } } for(i=0;i b[i]) min=b[i]; printf("%d",min); return 0; } #includeP-0027int main(){ int day,fog,num; int nums[10]={1,2,3,4,5,6,7,8,9,0}; scanf("%d%d%d",&day,&fog,&num); if(day>=6||fog<200){//不限行的情况 printf("%d no",num%10); }else if(day>0&&day<6&&fog>=200&&fog<400){//周一到周五且200-400的限行 if(num%10==nums[day-1]||num%10==nums[day+4]){//yes printf("%d yes",num%10); }else{ printf("%d no",num%10);//no } }else if(day>0&&day<6&&fog>=400&&fog<600){//周一到周五且大于400 //偶数周情况 if(day%2==0){//yes if(num%10==0||num%10==2||num%10==4||num%10==6||num%10==8){ printf("%d yes",num%10); }else{ printf("%d no",num%10); } }else{//奇数周情况 if(num%10==1||num%10==3||num%10==5||num%10==7||num%10==9){ printf("%d yes",num%10);//yes }else{ printf("%d no",num%10);//no } } } return 0; } #includeP-0028int main(){ int es[3]={0,110,210}; double e; scanf("%lf",&e); if(e>=es[0]&&e<=es[1]){ //每度0.5元 printf("%.2lf",e/2); }else if(e>es[1]&&e<=es[2]){ //超过部分0.55元 printf("%.2lf",55+(e-110)*0.55); }else{ //每度电0.70元 printf("%.2lf",110+0.7*(e-210)); } return 0; #includeP-0029int main(){ int days[12]={31,28,31,30,31,30,31,31,30,31,30,31}; int a,b; scanf("%d%d",&a,&b); if(a%4==0&&a%100!=0||a%400==0){//闰年的二月 if(b==2){ printf("%d",days[b-1]+1); } }else{ printf("%d",days[b-1]); } return 0; } #includeP-0030int main(){ int n,sum=0; scanf("%d",&n); while(n!=0){ sum+=n%10; n/=10; } printf("%d",sum); return 0; } #includeint main(){ unsigned int a,b; int sum=0; scanf("%d%d",&a,&b); for(int i=a;i<=b;i++){ sum=i; for(int j=1;j P-0031 (前几行注释是迭代法,可以参考)
#includeP-0032//int gcd(int a,int b){ // return(b?gcd(b,a%b):a); //} int main(){ int a,b; scanf("%d%d",&a,&b); int r; while(a%b!=0){ r=a%b; a=b; b=r; } printf("%d",b); return 0; } #includeP-0041int main(){ int n; int count=0; scanf("%d",&n); while(n!=1){ if(n%2==0){ n/=2; }else{ n=3*n+1; } count++; } printf("%d",count); return 0; } #includeP-0043int main(){ int n; int c1=0; int c2=0; int c3=0; int c4=0; int c5=0; int c6=0; int num[1000]; double sum=0; int air[]={0,50,100,150,200,250,300}; scanf("%d",&n); for(int i=0;i =0&&num[i]<=50){ c1++; }else if(num[i]>=51&&num[i]<=100){ c2++; }else if(num[i]>=101&&num[i]<=150){ c3++; }else if(num[i]>=151&&num[i]<=200){ c4++; }else if(num[i]>=201&&num[i]<=300){ c5++; }else if(num[i]>300){ c6++; } } printf("%d %d %d %d %d %d",c1,c2,c3,c4,c5,c6); return 0; } #includeP-0045int main(){ long a; int c=0,max=0,min=9; scanf("%ld",&a); do{ int t = a%10; if(t>max)max=t; if(t 0); printf("%d %d %d",c,max,min); return 0; } #includeP-0046#include //fabs()里面要浮点数 int main(){ int n,max; scanf("%d",&n); int t[30]; if(n>=2&&n<=30){ for(int i=0;i max){ max=fabs((double)t[i + 1]-t[i]); } } printf("%d",max); } return 0; } (要注意函数调用的参数的类型,不然有可能编译错误) #includevoid FindTurningPoint(int a[],int length){ int count=0; for(int i=1;i a[i+1]&&a[i]>a[i-1])||(a[i]=3&&n<=100){ for(int i=0;i P-0049 #includeP-0050#include int main(){ int a; scanf("%d",&a); if(sqrt((double)a)==(int)sqrt((double)a)){ printf("%d",(int)sqrt((double)a)); }else{ printf("no"); } return 0; } (sqrt函数调用参数一定要是double,不然可能oj编译错误) #includeP-0051int swap(int *a,int *b){//总共用到三处俩个变量互换,特此剔出声明 int t; t=*a; *a=*b; *b=t; return 0; } void DoubleSort(int a[],int length,int b[]){//排序魔改版,qq号和位数合一一映射 int i,j,t; for (i=0;i a[j]){ swap(&a[i],&a[j]); swap(&b[i],&b[j]); } } } } int main(){ int n,t; int qq[99]; int sum[99]; int qqcopy[99]; scanf("%d",&n); for(int i=0;i =1;qq[i]/=10) { sum[i]+=qq[i]%10; } } DoubleSort(sum,n,qqcopy); for(int i=0;i qqcopy[i+1]){ swap(&qqcopy[i],&qqcopy[i+1]); } } printf("%d",qqcopy[n-1]);//最后一个肯定是最大的了 return 0; } #includeP-0052int main(){ int a,b,c,d,min,t; scanf("%d%d%d%d",&a,&b,&c,&d); int num[4]; num[0]=a; num[1]=b; num[2]=c; num[3]=d; //Selection Sort for(int i=0;i<3;i++){ for(int j=i+1,min=i;j<4;j++){ if(num[min]>num[j]){ min=j; } if(min!=i){ t=num[i]; num[i]=num[min]; num[min]=t; } } } printf("%d",num[3]); return 0; } (如果你想时间更快,就不要像我这样用排序) #includeP-0053int main(){ char c=getchar(); if(c>=97&&c<=122){//小a是97,z是122 putchar(c-32); }else if(c>=65&&c<=90){//A 65 Z 90 putchar(c+32); }else{ putchar(c); } return 0; } #includeP-0054int main(){ int m; scanf("%d",&m); if(m>=90){ putchar(65); }else if(m>=80&&m<=89){ putchar(66); }else if(m>=70&&m<=79){ putchar(67); }else if(m>=60&&m<=69){ putchar(68); }else{ putchar(69); } return 0; } #includeP-0056int main(){ int n,a,b,c;//1000-2000 scanf("%d",&n); for(int i=1;i<1000;i++){//穷举1~1000的所有数,因为abc最多是三位数 //abc最多三位数,分别求i的个十百位 a=i%10; b=(i/10)%10; c=(i/100)%10; if(i+a*100+b*10+c==n){ printf("%d %d %dn",c,b,a); } } return 0; } #includeP-0063int main(){ int a,b,c; scanf("%d%d%d",&a,&b,&c); if(a*a+b*b==c*c){ printf("%d",a*b); }else{ printf("no"); } return 0; } #includeP-0064int main(){ int S,A,T; float s; scanf("%d",&S); if(S<=3500){ s=0; }else{ A=S-3500; if(A<=1500){ s=0.03*A; }else if(A>1500&&A<=4500){ s=1500*0.03+(A-1500)*0.1; }else if(A>4500&&A<=9000){ s=1500*0.03+3000*0.1+0.2*(A-4500); }else if(A>9000&&A<=35000){ s=1500*0.03+3000*0.1+0.2*4500+0.25*(A-9000); }else{ s=1500*0.03+3000*0.1+0.2*4500+0.25*26000+0.3*(A-35000); } } T=S-s; printf("%d",T); return 0; } #includeint main(){ int n; scanf("%d",&n); for(int i=(n*n-n+1);i<=(n*n+n-1);i+=2){ printf("%d ",i); } return 0; } 解释:
//给奇数排序的话,n^3等于n个奇数合 //可以证明最后一个奇数的序号就是n(n+1)/2 //第一个奇数的序号就是(n-1)n/2 //第一个奇数的值是n^2-n+1 //最后一个奇数的值是序号的两倍减去一 也就是n^2+n-1P-0066#includeint main(){ int n; scanf("%d",&n); double sum=0; int num[100]; for(int i=0;i P-0068 #includeP-0087int main(){ int months[12]={31,28,31,30,31,30,31,31,30,31,30,31}; int y,d,t,sum=0,i=0; scanf("%d%d",&y,&d); if(y%400==0||(y%100!=0&&y%4==0)){ months[1] =29; } for(;i<12;i++){ sum+=months[i]; if(sum>=d){//d-(sum-months[i])先sum减去该索引的天数,得到前几个月天数之和,再用d减去就行 printf("%d %d",i+1,d-sum+months[i]); break; } } return 0; } #includeP-0093int main(){ int i,l,j; int count; int sum=0; int num[1000]; for(i=0;i<1000;i++){ scanf("%d",&num[i]); if(num[i]==0){ break; } } for(i=0;i<1000;i++){ count=1; if(num[i]==1){ sum+=1; } if(num[i]==2){ if(i==0||num[i-1]==1){ sum+=2; }else{ for(j=i-1;j>=0;j--){ if(num[j]==2){ count+=1; }else{ break; } } sum+=2*count; } } if(num[i]==0){ sum+=0; break; } } printf("%d",sum); return 0; } #includeP-0094int main(){ int a,b; scanf("%d%d",&a,&b); printf("%d %d",a>b?(a%10):(b%10),a>b?(b*b):(a*a)); return 0; } #includeint main(){ int a[4]; int min,t,i,j; for(int i=0;i<4;i++){ scanf("%d",&a[i]); } for(i=0;i<3;i++){//选择排序 for(j=i+1,min=i;j<4;j++){ if(a[j] P-0097 #includeP-0098int main(){ for(int i=97;i<=122;i++){ printf("%c ",i); } printf("n"); for(int i=122;i>=97;i--){ printf("%c ",i); } return 0; } #includeP-0099int main(){ double m; scanf("%lf",&m); if(m>=90){ printf("%.2f %c",m,65); }else if(m>=80&&m<=89){ printf("%.2f %c",m,66); }else if(m>=70&&m<=79){ printf("%.2f %c",m,67); }else if(m>=60&&m<=69){ printf("%.2f %c",m,68); }else{ printf("%.2f %c",m,69); } return 0; } #includeP-0101int main(){ int es[3]={0,110,210}; double e; scanf("%lf",&e); if(e>=es[0]&&e<=es[1]){ //每度0.5元 printf("%.2lf %c %.2f",e/2,65,0.00); }else if(e>es[1]&&e<=es[2]){ //超过部分0.55元 printf("%.2lf %c %.2f",55+(e-110)*0.55,66,e-110); }else{ //每度电0.70元 printf("%.2lf %c %.2f",110+0.7*(e-210),67,e-210); } return 0; } #includeP-0112int main(){ char str[4]; for(int i=0;i<4;i++){ scanf("%c",&str[i]); if(str[i]>=65&&str[i]<=90){//大写转小写 str[i]+=32; }else if(str[i]>=97&&str[i]<=122){//小写转大写 str[i]-=32; }else if(str[i]>=48&&str[i]<=57){//48-57是数字,转为* str[i]='*'; }else{ str[i]='@'; } printf("%c",str[i]); } return 0; } #includeP-0114&P-0116#include int main(){ double x; scanf("%lf",&x); printf("%.2f",x>=0?sqrt(x):(pow(x+1,2)+2*x+1/x)); return 0; } #includeP-0146int main(){ int es[3]={0,110,210}; double e; scanf("%lf",&e); if(e>=es[0]&&e<=es[1]){ //每度0.5元 printf("%.2lf",e/2); }else if(e>es[1]&&e<=es[2]){ //超过部分0.55元 printf("%.2lf",55+(e-110)*0.55); }else{ //每度电0.70元 printf("%.2lf",110+0.7*(e-210)); } return 0; } #includeP-0147int main(){ int n; scanf("%d",&n); switch(n){ case 0:printf("zero");break; case 1:printf("one");break; case 2:printf("two");break; case 3:printf("three");break; case 4:printf("four");break; case 5:printf("five");break; case 6:printf("six");break; case 7:printf("seven");break; case 8:printf("eight");break; case 9:printf("nine");break; } return 0; } #includeP-0149int main(){ int a,b; int sum=0; scanf("%d ",&a); while(a!=0){ if(a%2!=0){ sum=sum+a; } scanf("%d ",&a); } printf("%d",sum); return 0; } #includeP-0150int main(){ int n,flag=1; double sum=0; scanf("%d",&n); for(double i=1;i<=n;i++){ sum=sum+flag*(i/(2*i-1)); flag*=-1; } printf("%.3f",sum); return 0; } #includeP-0151int main(){ int x; scanf("%d",&x); if(x<1){ printf("%d",x); }else if(x>=1&&x<10){ printf("%d",2*x-1); }else{ printf("%d",3*x-11); } return 0; } #includeP-0155int main(){ double i; double bonus1,bonus2,bonus4,bonus6,bonus10,bonus; scanf("%lf",&i); bonus1=100000*0.1; bonus2=bonus1+100000*0.075; bonus4=bonus2+200000*0.05; bonus6=bonus4+200000*0.03; bonus10=bonus6+400000*0.015; if(i<=100000) { bonus=i*0.1; } else if(i<=200000) { bonus=bonus1+(i-100000)*0.075; } else if(i<=400000) { bonus=bonus2+(i-200000)*0.05; } else if(i<=600000) { bonus=bonus4+(i-400000)*0.03; } else if(i<=1000000) { bonus=bonus6+(i-600000)*0.015; } else if(i>1000000) { bonus=bonus10+(i-1000000)*0.01; } printf("%.2lf",bonus); return 0; } #includeP-0156int main(){ unsigned int n; int shit=1; int peach=0; scanf("%u",&n); printf("%d ",n); if(n>0&&n<=10){ for(int i=1;i<=n;i++){ shit*=i; peach+=shit; } printf("%d ",shit); printf("%d",peach); }else if(n==0){ printf("%d %d",1,1); } return 0; } #includeP-0157int main(){ int count=0; for(int i=100;i<=500;i++){ if(i%77!=0&&(i%7==0||i%11== 0)){ count++; } } printf("%d",count); return 0; } #includeP-0161int main(){ int n,i=1; int sum=0; scanf("%d",&n); while(i<=n){ sum+=i; i++; } printf("%d",sum); return 0; } #includeP-0177int main(){ int n; int c1=0,c2=0,c3=0,c4=0,c5=0; scanf("%d",&n); for(int i=1;i<=n;i++){ if(i%2!=0){ c1++; }else if(i%2==0){ c2++; } if(i%3==0)c3++; if(i%5==0)c4++; if(i%7==0)c5++; } printf("%d %d %d %d %d",c1,c2,c3,c4,c5); return 0; } #includeP-0183#include int main(){ char str[101]={' '}; int sum=0; gets(str);//scanf("%s",&str);scanf不行 //因为scanf不能输入空格,gets可以接收空格,估计是xdoj例子里面有一个输入了空格 for(int i=0;str[i]!=' ';i++){ sum+=(int)str[i];//算出十进制的合 } //再转化为2进制,取后面一字节,也就是后八位 printf("%d",sum&255); //(255二进制是1111 1111 只有后八位是1,& 运算后sum只保留了二进制的后八位,再用%d输出后变成了10进制) return 0; } #includeP-0185int GreatCommonDivsior(int a,int b){ int r=a%b; while(r!=0){ a=b; b=r; r=a%b; } return b; } int main(){ int a,b; scanf("%d%d",&a,&b); //最小公倍数=两数的乘积 除 最大公约数 printf("%d %d",GreatCommonDivsior(a,b),a*b/GreatCommonDivsior(a,b)); return 0; } #includeP-0189#include int main(){ double x1,x2,a,t; scanf("%lf",&a); x2=1; do{ x1=x2; x2=0.5*(x1+a/x1); }while(fabs(x1-x2)>=1e-5); printf("%.5lf",x2); return 0; } #includeint main(){ double s=100,h=50; int n; scanf("%d",&n); for(int i=1;i P-0196 #includeP-0249int main(){ int i,j,k; char n; scanf("%c",&n); for(i=65;i<=n;i++){//大写A是65,n-i表示行数 for(j=n-i;j>0;j--){//空格的个数是递减的 printf(" "); } for(k=65;k<=i;k++){//从A开始正向输出 ABCDE... printf("%c",k); } for(k=i-1;k>=65;k--){//从中间的字母开始反向输出 ...EDCBA printf("%c",k); } printf("n");//最外层结束一次,换一次行 } return 0; } #includeP-0298int main(){ int n,i; scanf("%d",&n); int t=n; for(i=2;i<=t/2;i++){//因数不超一半,1肯定是因数,直接跳过,从2始 从小到大找 //不用i<=n/2的原因是下面的操作会改变n的值 while(n%i==0){ printf("%d",i); n/=i;//直接除以因数i if(n!=1){ printf("*");//不是1表示 仍有因数,输出乘号 } } } return 0; } #includeP-0299int main(){ int a,b,i,j,min,t; scanf("%d%d",&a,&b); int num[4]={ (a+b)*(a+b),(a-b)*(a-b), a*a+b*b,a*a-b*b }; for(i=0;i<3;i++){ for(j=i+1,min=i;j<4;j++){ if(num[min]>num[j]){ min=j; } } if(min!=i){ t=num[min]; num[min]=num[i]; num[i]=t; } } printf("%d %d",num[3],num[0]); return 0; } #includeP-0300#include int main(){ int p,c; int t; scanf("%d",&p); t=(p-1)/1e5; switch(t){ case 0: c=p*0.1; break; case 1: c=(p-1e5)*0.075+1e5*0.1; break; case 2: case 3: c=(p-2e5)*0.05+1e5*0.1+1e5*0.075; break; case 4: case 5: c=(p-4e5)*0.03+1e5*0.1+1e5*0.075+2e5*0.05; break; case 6: case 7: case 8: case 9: c=(p-6e5)*0.015+1e5*0.1+1e5*0.075+2e5*0.05+2e5*0.03; break; default: c=(p-1e6)*0.01+1e5*0.1+1e5*0.075+2e5*0.05+2e5*0.03+4e5*0.015; } printf("%dn",c); return 0; } #includeP-0301int main(){ int n; int count=0; scanf("%d",&n); if(n!=0){ while(n<=999999999&&n>0){ n/=10; count++; } printf("%d",count); }else{//没0的情况会只有75分 printf("%d",1); } return 0; } #includeP-0302void Sum(int a,int anum[]){ int count=1; int sum=1; for(int i=2;i<=a/2;i++){ if(a%i==0){ sum+=i; count++; } } anum[0]=sum; anum[1]=count; } int main(){ int a,b; int anum[2]; int bnum[2]; scanf("%d%d",&a,&b); Sum(a,anum); Sum(b,bnum); if(a==bnum[0]&&b==anum[0]){ printf("yes %d %d",anum[1],bnum[1]); }else{ printf("no %d %d",anum[1],bnum[1]); } return 0; } #include#include int isPrimenum(int j){//判断j是不是素数 int flag=1; for(int i=2;i<=sqrt((double)j);i++){//sqrt函数的参数要是实数 if(j%i==0){ flag=0; break; } } if(flag){ return flag; } return 0; } void ProducePrimeNums(int prnums[],int p){ int i=0; for(int j=2;i 最后
感兴趣的可以关注我的微信公众号,第一时间收到动态



