算法竞赛入门经典第二版习题答案.doc_第1页
算法竞赛入门经典第二版习题答案.doc_第2页
算法竞赛入门经典第二版习题答案.doc_第3页
算法竞赛入门经典第二版习题答案.doc_第4页
算法竞赛入门经典第二版习题答案.doc_第5页
免费预览已结束,剩余10页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

求int的上限与下限#include /运行时间长,请等待. int main() int min ,max; FILE *fin,*fout; fin=fopen(min of int.out,wb); fout=fopen(max of int.out,wb); for(min=-1;min0;) max+ ; fprintf(fout,%dn,max-1); fclose(fin); fclose(fout); return 0; 1-1#include int main() int a,b,c; scanf(%d%d%d,&a,&b,&c); double average; average=(a+b+c)/3.0; /一定要将int型转为浮点型 printf(Average=%.3lf,average ); system(pause); return 0; 1-2#include int main() double f,c; printf(请输入华氏温度fn); scanf(%lf,&f); c=(f-32)*5/9 ; printf(摄氏温度c=%.3lfn,c); system(pause); return 0; 1-3#include int main() int n; scanf(%d,&n); printf(%dn,(1+n)*n/2) ; system(pause); return 0; 1-4#include #include int main() const double pi =4.0*atan(1.0); int n; scanf(%d,&n); while(n=360) printf(请输入小于360的角n); scanf(%d,&n); printf(正弦:%lfn余弦:%lf,sin(n*pi/180),cos(n*pi/180); system(pause); return 0; 1-5#include #include int main() double x1,y1,x2,y2; printf(请输入点A的坐标n); scanf(%lf%lf,&x1,&y1); printf(请输入点B的坐标n); scanf(%lf%lf,&x2,&y2); double d; d=sqrt(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2); printf(%.3lfn,d); system(pause); return 0; 1-6#include int main() int a; scanf(%d,&a); if(a%2=0)printf(该数是偶数); else printf(该数非偶数); system(pause); return 0; 1-7#include int main() const int a=95; int n; printf(你要买多少件衣服n); scanf(%d,&n); if(a*n=300)printf(需要%.2lf元n,a*n*0.85); else printf(需要%.2lf元n,(double)a*n); /由于输出是小数%.2lf,故一定要将int型转化为浮点型 system(pause); return 0; 1-8#include #include int main() double a; scanf(%lf,&a); if(a0)printf(%.2lf,a); else printf(%.2lf,-a); system(pause); return 0; 1-9(方法一)#include int main() int a,b,c,max,min,middle; scanf(%d%d%d,&a,&b,&c); while(a0|b0|cb)min=b;if(ac)min=c; max=a;if(ab)max=b;if(amax)printf(yes); else printf(no); system(pause); return 0; 1-9(方法二)#include int main() int a,b,c,t=0; scanf(%d%d%d,&a,&b,&c); while(a0|b0|cb)t=a;a=b;b=t; if(ac)t=a;a=c;c=t; if(bc)t=b;b=c;c=t; if(a+bc)printf(yes); else printf(no); system(pause); return 0; 1-10#include int main() int n; scanf(%d,&n); if(n%4=0) if(n%100=0) if(n%400=0) printf(yes); else printf(no); else printf(yes); else printf(no); system(pause); return 0; 3n+1解决篇1#include int main() int count=0;double i,m; scanf(%lf,&i); for(;i1;) m=i/2; if(floor(m+0.5)!=m)i=3*i+1;i/=2;count+=2;/floor(x)取x的整数部分. else i/=2;count+; printf(%dn,count); system(pause); return 0; 3n+1解决篇2#includeint main() long long n, count = 0;/long long 的取值范围:-263263-1 scanf(%I64d, &n); while(n 1) if(n % 2 = 1) n = n*3+1; else n /= 2; count+; printf(%I64dn, count); return 0;数据统计解决篇#include int main() int x,n=0,s=0,min,max; while(scanf(%d,&x)=1) if(n=0)min=max=x;/读取第一个数的时候将第一个数赋值给min和max s+=x; if(xmax)max=x; n+; printf(%d %d %.3lfn,min,max,(double)s/n); system(pause); return 0; 2-1(fin)#include int main() FILE *fin,*fout; fin=fopen(digit.in,rb); fout=fopen(digit.out,wb); /*fin=stdin; fout=stdout;*/ int a,i=0; fscanf(fin,%d,&a); while(1) a/=10; i+; if(a1)break; fprintf(fout,%drn,i); fclose(fin); fclose(fout); /system(pause); return 0;2-1(freopen)#include /#define LOCAL/在编译选项中定义LOCAL int main() #ifdef LOCAL freopen(digit.in,r,stdin); freopen(digit.out,w,stdout); #endif int a,i=0; scanf(%d,&a); while(1) a/=10; i+; if(a1)break; printf(%dn,i); return 0;2-2(freopen)#include /#define LOCAL/编译选项中定义 int main() #ifdef LOCAL freopen(daffodil.out,w,stdout); #endif int a,b,c,m; for(a=1;a=9;a+) for(b=0;b=9;b+) for (c=0;c=9;c+) m=a*100+b*10+c; if(m=a*a*a+b*b*b+c*c*c)printf(%dn,m); /system(pause); return 0; 2-2(fin)#include int main() FILE *fout; fout=fopen(daffodil.out,wb); int a,b,c,m; for(a=1;a=9;a+) for(b=0;b=9;b+) for(c=0;c=9;c+) m=a*a*a+b*b*b+c*c*c; if(m=a*100+b*10+c) fprintf(fout,%drn,m); fclose(fout); return 0;2-3(fin)#includeint main() FILE *fin,*fout; fin=fopen(hanxin.in,rb); fout=fopen(hanxin.out,wb); /fin=stdin; /fout=stdout; int a,b,c,x,temp=0;/temp用来判断是否在10到100内存在这样的数 fscanf(fin,%d%d%d,&a,&b,&c); for(x=10;x=100;x+) if(x%3=a&x%5=b&x%7=c) fprintf(fout,%drn,x); temp=1; break; if(!temp)fprintf(fout,No answerrn); fclose(fin); fclose(fout); return 0;2-3(freopen)#includeint main() /会在编译选项中定义LOCAL #ifdef LOCAL freopen(hanxin.in,r,stdin); freopen(hanxin.out,w,stdout); #endif int a,b,c,x,temp=0; scanf(%d%d%d,&a,&b,&c); for(x=10;x=100;x+) if(x%3=a&x%5=b&x%7=c) printf(%dn,x); temp=1; break; if(!temp)printf(No answern); return 0;2-4(fin)#includeint main() FILE *fin,*fout; fin=fopen(triangle.in,rb); fout=fopen(triangle.out,wb); /fin=stdin; /fout=stdout; int n,i,j,k; fscanf(fin,%drn,&n); for(i=1;i=n;i+) for(j=1;j=1;k-)fprintf(fout,*); fprintf(fout,rn); fclose(fin); fclose(fout); return 0;2-4(freopen)#includeint main() /在编译选项内定义LOCAL #ifdef LOCAL freopen(triangle.in,r,stdin); freopen(triangle.out,w,stdout); #endif int n,i,j,k; scanf(%d,&n); for(i=1;i=n;i+) for(j=1;j=1;k-)printf(*); printf(n); return 0;2-5(fin)#includeint main() FILE *fin,*fout; fin=fopen(stat.in,rb); int n,a,i,m,count=0; fscanf(fin,%d,&n); for(i=1;i=n+1;i+) fscanf(fin,%d,&a); if(i=n+1)m=a; fclose(fin); fin=fopen(stat.in,rb); for(i=0;i=n;i+) fscanf(fin,%d,&a); if(i!=0) if(am) count+; fclose(fin); fout=fopen(stat.out,wb); fprintf(fout,%drn,count); fclose(fout); return 0;2-5(freopen)#includeint main() freopen(stat.in,r,stdin); freopen(stat.out,w,stdout); int n,a,i,m,count=0; scanf(%d,&n); for(i=1;i=n+1;i+) scanf(%d,&a); if(i=n+1)m=a; freopen(stat.in,r,stdin); for(i=0;i=n;i+) scanf(%d,&a); if(i!=0) if(am) count+; printf(%dn,count); return 0;2-6(fin)#includeint main() FILE *fin,*fout; fin=fopen(harmony.in,rb); int n,i; double H=0; fscanf(fin,%d,&n); for(i=1;i=n;i+) H+=(double)1/i; fclose(fin); fout=fopen(harmony.out,wb); fprintf(fout,%.3lfrn,H); fclose(fout); return 0;2-6(freopen)#includeint main() #ifdef LOCAL freopen(harmony.in,r,stdin); freopen(harmony.out,w,stdout); #endif int n,i; double H=0; scanf(%d,&n); for(i=1;i=n;i+) H=H+double/i; printf(%.3lf,H); return 0;2-7(fin)#includeint main() FILE *fout; int i; double H=0; for(i=1;2*i-11000000;i+) if(i%2=1)H+=(double)1/(2*i-1); else H-=(double)1/(2*i-1); fout=fopen(approximation.out,wb); fprintf(fout,%lfrn,H); return 0;2-7(freopen)#includeint main() #ifdef LOCAL freopen(approximation.in,r,stdin); freopen(approximation.out,w,stdout); #endif int i; double H=0; for(i=1;2*i-11000000;i+) if(i%2=1)H+=(double)1/(2*i-1); else H-=(double)1/(2*i-1); printf(%lf,H); return 0;2-8(fin,double)#include#includeint main() FILE *fin,*fout; fin=fopen(subsequence.in,rb); fout=fopen(subsequence.out,wb); int n,m,i; double H=0; double ii; fscanf(fin,%d%d,&n,&m); for(i=n;i=m;i+) ii=(double)i*i; H+=1/ii; fprintf(fout,%.5lfrn,H); fprintf(fout,%.2lfrn,(double)clock()/CLOCKS_PER_SEC);/比较double和long long运行效率 fclose(fin); fclose(fout); return 0; 2-8(fin,long long)#include#includeint main() FILE *fin,*fout; fin=fopen(subsequence.in,rb); fout=fopen(subsequence.out,wb); int n,m,i; double H=0; fscanf(fin,%d%d,&n,&m); for(i=n;i=m;i+) long long ii=1;/定义 ii=ii*i*i; /不用ii=i*i也不是ii*=i*i,这样做是为了防止i*i溢出; 可以认为这一步将int型转化为long long 型 H+=1/(double)ii;/不是(double)1/ii fprintf(fout,%.5lfrn,H); fprintf(fout,%.2lfrn,(double)clock()/CLOCKS_PER_SEC); /比较double和long long运行效率 fclose(fin); fclose(fout); return 0; 2-8(freopen)#include#define LOCALint main() #ifdef LOCAL freopen(subsequence.in,r,stdin); freopen(subsequence

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论