2.5习题与注解
来源:互联网 发布:暴雪 泰坦计划 知乎 编辑:程序博客网 时间:2024/06/01 08:34
<span style="font-size:18px;">2-1 水仙花数</span>
输出100-999中的所有水仙花数。若3位数ABC满足ABC=A^3+B^3+C^3,则称其为水仙花数。例如153=1^3+5^3+3^3,所以153是水仙花数。
#include<cstdio>#include<cstdlib>//3位数的3次幂才构成水仙花数int main(){ int n; for(int a=1;a<=9;a++) for(int b=0;b<=9;b++) for(int c=0;c<=9;c++) { n=a*100+b*10+c; if(n==a*a*a+b*b*b+c*c*c) printf("%d\n",n); } return 0;}
#include<cstdio>#include<cstdlib>int main(){ for(int i=100;i<=999;i++) { int a=i/100; int b=i/10%10; int c=i%10; if(a*a*a+b*b*b+c*c*c==i) printf("%d ",i); } return 0;}//结果:153 370 371 407
2-2韩信点兵
相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排、五人一排、七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人数了,输入包含多组数据,每组数据包含三个非负整数a,b,b表示每种队形排尾的人数(a<3,b<5,c<7),输出总人数的最小值(或报告无解)。已知总人数不小于10,不超过100,。输入到文件结束为止。
样例输入:
2 1 3
2 1 6
样例输出:
case1 :No answer
case2:41
#include<cstdio>#include<cstdlib>//输出最小的可能的值int count[100];int main(){ int a,b,c; scanf("%d %d %d",&a,&b,&c); bool find=false; for(int i=10;i<=100;i++) { if(i%3==a&&i%5==b&&i%7==c) { find=true; printf("%d",i); break; } } if(find==false) printf("no answer"); return 0;}
2-3倒三角形
输入正整数n≤20,输出一个n层的倒三角形。例如,n=5时输出如下:
#########
#######
#####
###
#
#include<cstdio>#include<cstdlib>int main(){ int n; scanf("%d",&n); int num=2*n-1; for(int a=0;a<n;a++) { for(int b=0;b<a;b++) printf(" "); for(int c=0;c<num;c++) printf("#"); printf("\n"); num-=2; } return 0;}
正三角形:
n=5时,输出如下所示:
#
###
#####
#######
#########
#include<cstdio>#include<cstdlib>int main(){ int n; scanf("%d",&n); for(int a=0;a<n;a++) { for(int b=a;b<n-1;b++) printf(" "); for(int c=0;c<2*a+1;c++) printf("#"); printf("\n"); } return 0;}
2-4子序列的和
输入两个正整数n<m<10^6,输出1/(n^2)+1/((n+1)^2)+......+1/(m^2),保留5位小数,输入包含多组数据,结束标记为n=m=0.提示:本题有陷阱。
样例输入:
2 4
65536 655360
0 0
样例输出:
case 1:0.42361
case 2:0.00001
#include<cstdio>#include<cstdlib>int main(){ double n, m; double i, sum = 0.0; scanf("%lf%lf", &n, &m); for (i = n; i <= m; i++) { sum += 1.0/(i*i); } printf("%.5lf\n", sum); return 0;}
2-5分数化小数
输入正整数a,b,c,输出a/b的小数形式,精确到小数点后c位。a,b≤10^6,c≤100.输入包含多组数据,结束标记为a=b=c=0.
样例输入:
1 6 4
0 0 0
样例输出:
case1 :0.1667
#include<cstdio>#include<cstdlib>int main(){ int a,b,c; scanf("%d %d %d",&a,&b,&c); printf("%.*f",c,a*1.0/b);//格式化输出:可变宽度参数,*定义输出的位数 return 0;}
2-6排列
用1,2,3,...,9组成3个三位数abc,def,ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3.按照"abc def ghi"的格式输出所有解,每行一个解。提示:不必太动脑筋。
#include<cstdio>#include<cstdlib>int vis[10];//该数组保存1,2,3....9出现的次数int main(){ int x,y,z; bool solved=false; for(int a=1;a<=9;a++) { for(int b=1;b<=9;b++) if(a!=b) { for(int c=1;c<=9;c++) if(a!=c&&b!=c) { x=a*100+b*10+c; y=2*x; z=3*x; int d=y/100; int e=y/10%10; int f=y%10; int g=z/100; int h=z/10%10; int i=z%10; for(int i=1;i<=9;i++) vis[i]=0; vis[a]++;vis[b]++;vis[c]++; vis[d]++;vis[e]++;vis[f]++; vis[g]++;vis[h]++;vis[i]++; bool judge=true; for(int i=1;i<=9;i++) { if(vis[i]!=1)//若出现的次数不等于1 ,则不符合题意 { judge=false; break; } } if(judge) { printf("%d %d %d\n",x,y,z); solved=true; } } } } if(!solved) printf("no answer"); return 0;}/*结果192 384 576219 438 657273 546 819327 654 981*/
#include<cstdio>#include<cstdlib>int main(){ double n, m; double i, sum = 0.0; scanf("%lf%lf", &n, &m); for (i = n; i <= m; i++) { sum += 1.0/(i*i); } printf("%.5lf\n", sum); return 0;}//当n,m为int型时,输入数据65536 655360 结果为1.#INF0 可能的原因是出0溢出或者数据溢出。为什么!?
#include<cstdio>#include<cstdlib>int main(){ for(int i=100;i<=999;i++) { int a=i/100; int b=i/10%10; int c=i%10; if(a*a*a+b*b*b+c*c*c==i) printf("%d ",i); } return 0;}//结果:153 370 371 407
- 2.5习题与注解
- 算法竞赛入门经典(第2版)2.5注解与习题
- 算法-java(1.5注解与习题)
- 《算法竞赛入门经典》刘汝佳 C语言部分(前四章)“注解与习题” 之思索 <1>
- 快学Scala学习笔记及习题解答(15-16注解与XML处理)
- 数据结构习题与解析
- 操作系统习题与答案
- 注解@PostConstruct与注解@PreDestroy
- 访问注解与自定义注解
- 重复注解与类型注解
- 编程珠玑第1章部分课后习题答案注解
- 编程珠玑第2章部分课后习题答案注解
- 快学Scala习题解答—第十五章 注解
- 关于<<c与指针>>习题
- ojC++习题 继承与组合
- C++习题 继承与组合
- SICP笔记与习题-第一章
- C++习题与解析-模板
- decode_stacktrace: make stack dump output useful again
- Eclipse启动时tomcat超时设置
- CSS Sprite
- cocos2d-x 3.x win配置
- 坚持刷题
- 2.5习题与注解
- ActionResult
- Search in Rotated Sorted Array II - Leetcode
- 我的学习之旅(37) sched.c
- 5.php内置MySQL函数学习
- HttpStatus 404
- jstl/jsp--el 判断为空
- 验证字符串是否为有效的IP地址
- 素数筛