ACM杭电的AC回顾
2016-02-28 20:23
274 查看
鉴于太繁琐,打算把以前的存稿全部发出来,反正这几个里面我都在代码前面加了题目的。
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
先到这吧,下面的待会再发.
1998
/*************************************************** 一个 n 阶方阵的元素是1,2,...,n^2,它的每行, 每列和2条对角线上元素的和相等,这样的方阵叫魔方。 n为奇数时我们有1种构造方法,叫做“右上方” 例如下面给出n=3,5,7时的魔方. 3 8 1 6 3 5 7 4 9 2 5 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 7 30 39 48 1 10 19 28 38 47 7 9 18 27 29 46 6 8 17 26 35 37 5 14 16 25 34 36 45 13 15 24 33 42 44 4 21 23 32 41 43 3 12 22 31 40 49 2 11 20 ***************************************************/ #include <stdio.h> int main() { int i,j,n,r,s,t; int a[100][100]; memset(a,0,sizeof(a)); scanf("%d",&t); while(t--) { memset(a,0,sizeof(a)); scanf("%d",&n); i=(n+1)/2; j=1; for(r=1;r<=n*n;r++) { a[i][j]=r; if(j==1 && i!=n) //第一行不是最后一列 { i=i+1; j=n; continue; }else if(j==1 && i==n) //第一行最后一列 { j=j+1; continue; }else if(j>1 && j<=n && i!=n && a[i+1][j-1]==0) //不是第一行不是最后一列且右上角没有值 { i=i+1; j=j-1; continue; }else if(j>1 && j<=n && i!=n && a[i+1][j-1]) //不是第一行不是最后一行右上角有值 { j=j+1; continue; }else if(j>1 && j<=n && i==n && a[1][j-1]==0) //不是第一行是最后一列且上一行第一个没有值 { i=1; j=j-1; continue; }else if(j>1 && j<=n && i==n && a[1][j-1]) //不是第一行是最后一列且上一行第一个有值 { j=j+1; } } for(r=1;r<=n;r++) { for(s=1;s<=n;s++) printf("%4d",a[s][r]); printf("\n"); } } }
1999
/************************************************** s(n)是正整数n的真因子之和,即小于n且整除n的因子和. 例如s(12)=1+2+3+4+6=16.如果任何数m,s(m)都不等于n, 则称n为不可摸数. *************************************************/ #include <stdio.h> int a[1100000],has[1001]; void init() { int i,j; for(i=1;i<=1000000;i++) //打表,生成所有的不可捉摸数和可捉摸数。 { for(j=i*2;j<=1000000;j+=i) { a[j]+=i; } } for(i=1;i<=1000000;i++) { if(a[i]<=1000)has[a[i]]=1; } } int main() { int n,i,j,t,ans; init(); scanf("%d",&t); while(t--) { scanf("%d",&n); if(has )puts("no"); else puts("yes"); } return 0; }
2000
/***************************************************************** 输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符。 *****************************************************************/ #include <stdio.h> int main() { char a,b,c,temp; while(scanf("%c%c%c",&a,&b,&c)!=EOF) { getchar(); if(a>b){temp=a;a=b;b=temp;} if(a>c){temp=a;a=c;c=temp;} if(b>c){temp=c;c=b;b=temp;} printf("%c %c %c\n",a,b,c); } }
2001
/******************************************* 输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离。 *******************************************/ #include<stdio.h> #include<math.h> int main() { double x1,x2,y1,y2,d; while(scanf("%lf %lf %lf %lf",&x1,&y1,&x2,&y2)!=EOF) { d=(x2-x1)*(x2-x1)+(y2-y1)*(y2-y1); d=pow(d,0.5); printf("%.2lf\n",d); } return 0; }
2002
/******************************************* 根据输入的半径值,计算球的体积。 *******************************************/ #include <stdio.h> #define PI 3.1415927 int main() { double r; double v; while(scanf("%lf",&r)!=EOF) { v=4*PI*r*r*r/3; printf("%.3lf\n",v); } }
2003
/******************************************* 求实数的绝对值 *******************************************/ #include <stdio.h> #include<math.h> int main() { double s; while(scanf("%lf",&s)!=EOF) { s=fabs(s); printf("%.2lf\n",s); } return 0; }
2004
/**************************************************************** 输入一个百分制的成绩t,将其转换成对应的等级,具体转换规则如下: 90~100为A; 80~89为B; 70~79为C; 60~69为D; 0~59为E; *****************************************************************/ #include<stdio.h> void main() { int a; while(scanf("%d",&a)!=EOF) { char b='A'; getchar(); if(a<0||a>100) printf("Score is error!\n"); else if(a<60) printf("E\n"); else { a=(100-a)/10; b=b+a; printf("%c\n",b); } } }
2005
/************************************* 给定一个日期,输出这个日期是该年的第几天。 **************************************/ #include<stdio.h> void main() { int month , day=0, year=0,t,date=0; while((scanf("%d/%d/%d",&year,&month,&date))!=EOF) { if((year%4==0&&year%100!=0)||year%400==0) { t=29; }else{t=28;} switch(month) { case 1: day=0;break; case 2: day=31;break; case 3: day=t+31;break; case 4: day=t+31+31;break; case 5: day=t+31+31+30;break; case 6: day=t+31+31+30+31;break; case 7: day=t+31+31+30+31+30;break; case 8: day=t+31+31+30+31+30+31;break; case 9: day=t+31+31+30+31+30+31+31;break; case 10: day=t+31+31+30+31+30+31+31+30;break; case 11: day=t+31+31+30+31+30+31+31+30+31;break; case 12: day=t+31+31+30+31+30+31+31+30+31+30;break; } printf("%d\n",day+date); } }
2006
/********************************** 给你n个整数,求他们中所有奇数的乘积 **********************************/ #include <stdio.h> int main() { int a,n,sum; while(scanf("%d",&n)!=EOF) { sum=1; while(n--) { scanf("%d",&a); if(a%2) sum*=a; } printf("%d\n",sum); } }
2007
/******************* 给定一段连续的整数,求出他们中所有偶数的平方和以及所有奇数的立方和。 *******************/ #include <stdio.h> int main() { int a,b,c,sum1,sum2; while(scanf("%d%d",&a,&b)!=EOF) { sum1=sum2=0; //记得清零 if(a>b) //输入需要调整前后大小 {c=a;a=b;b=c;} for(a;a<=b;a++) if(a%2) sum2+=a*a*a; else sum1+=a*a; printf("%d %d\n",sum1,sum2); } }
2008
/********************************************* 输入数据有多组,每组占一行,每行的第一个数是整数n(n<100) 表示需要统计的数值的个数 然后是n个实数;如果n=0,则表示输入结束,该行不做处理。 *********************************************/ #include <stdio.h> void main() { int n,i,fi,se,th; float a; while(scanf("%d",&n)!=EOF) { if(n!=0) { fi=0,se=0,th=0; while(n--) { scanf("%f",&a); if(a>0) fi++; if(a<0) se++; if(a==0) th++; } printf("%d %d %d\n",se,th,fi); } } }
2009
/************************************************************** 数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和。 **************************************************************/ #include <stdio.h> #include <math.h> void main() { int n,m; double x,y; while(scanf("%d%d",&n,&m)!=EOF) { y=n;x=0; while(m--) { x=x+y; y=sqrt(y); } printf("%.2lf\n",x); } }
2010
/****************************************************************** 对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说 输出的水仙花数必须大于等于m,并且小于等于n,如果有多个, 则要求从小到大排列在一行内输出,之间用一个空格隔开; 如果给定的范围内不存在水仙花数,则输出no; 每个测试实例的输出占一行 ***********************************************************************/ #include <stdio.h> void main() { int m,n,a,b,c,num; while(scanf("%d%d",&m,&n)!=EOF) { num=0; for(m;m<=n;m++) { a=m/100; b=(m/10)%10; c=m%10; if(m==a*a*a+b*b*b+c*c*c) { if(num!=0) printf(" "); printf("%d",m); num++; } } if(num==0) printf("no\n"); else printf("\n"); } }
先到这吧,下面的待会再发.
相关文章推荐
- 初识J2EE
- 简单工厂、工厂模式、抽象工厂模式
- 数据结构9-队列复习大纲
- Java 反射机制
- 变量地址和赋值
- android studio问题-ICCP:Not recognizing known sRGB profile
- xml文件解析(一)——xml文件格式
- Ajax中的get与post方式区别
- 【线扫描填充算法】用例过程图解
- 数据结构8-栈复习大纲
- margin叠加相邻两个元素的上下margin是叠加在一起
- ReactNative入门(安卓)——API(上)
- python(4)-迭代器 和 生成器
- 函数指针与回调函数
- Java-集合框架Map之HashMap、TreeMap
- MATLAB运算符
- Widget、Timer、TimerTask、Handler、Message的综合使用
- nyoj108 士兵杀敌(一) (线段树)
- 2015年终总结
- 数据结构-7