算法竞赛入门经典——习题2.5
来源:互联网 发布:nginx部署webpack项目 编辑:程序博客网 时间:2024/06/05 22:51
好久前买了《算法竞赛入门经典》,想着学习算法。一直拖到今天才开始做题……
所以开了个文件,把这里面的习题做完后都放上来,也方便以后回看。
- 水仙花数
- 题目:若三位数ABC满足ABC =
A3 +B3 +C3 ,则称ABC为水仙花数。输出100~999中的所有水仙花数。 - 代码:
- 题目:若三位数ABC满足ABC =
//水仙花数void Daffodil(){ for (int i=1; i<=9; i++) { for (int j=0; j<=9; j++) { for (int k=0; k<=9; k++) { int left = i*100 + j*10 + k; int sum = pow(i,3)+pow(j,3)+pow(k,3); if (left==sum && 100<=sum && sum<1000) { printf("%d=%d^3+%d^3+%d^3\n",sum,i,j,k); } } } }}
- 韩信点兵
- 题目:给定一个正整数模3,5,7的三个余数,求[10,100]以内满足条件最小的数
- 代码:
//韩信点兵 int Hanxin(const int& a, const int& b, const int& c){ for (int i=10; i<=100; i++) { if (i%3==a && i%5==b && i%7==c) { return i; } } return 0;}
倒三角形
- 题目:输入n,输出n层的倒三角形
- 代码:
//倒三角形 void triangle(const int& n){ int row = n, col = 2*n-1; for (int i=0; i<n; i++) { for (int j=0; j<col; j++) { if (j<i || j>=col-i) printf(" "); else printf("*"); } printf("\n"); }}
子序列的和
- 题目:输入
n<m<106 ,输出1/n2+1/(n+1)2+⋅⋅⋅+1/m2 的值,保留5位小数。 - 代码:
//子序列的和double subsequence(const int& n, const int& m){ double ans = 0; for (int i=n; i<=m; i++) { double x = (double)i/100; ans +=(1.0 / (x*x)); } return ans/10000;}
- 题目:输入
分数化小数
- 题目:输入a,b,c,输出
a/b 的小数形式,精确到小数点后c位。c<=100。 - 代码:
void decimal(const int& a, const int& b, const int& c){ int digit = c, last1 = 0, last0 = 0; int m = a / b, r = a % b; printf("%d.",m); while(r!=0) { //update r int pwd = 0; while (r<b) { r *=10; pwd++; } // 补零 for (int i=1; i<pwd; i++) { if(digit > 1) printf("0"); else if (digit == 1) last1 = 0; else if (digit == 0) last0 = 0; digit--; if (digit < 0) { printf("0"); return; } } m = r / b; if (digit > 1) printf("%d",m); else if (digit == 1) last1 = m; else if (digit == 0) last0 = m; r %=b; digit--; if (digit < 0) break; } if (r <= 0) { while (digit--) { printf("0"); } printf("\n"); return; } if (last0 >= 5) last1++; printf("%d\n",last1);}
- 题目:输入a,b,c,输出
排列
- 题目:用1~9组成3个三位数abc,def和ghi,每个数字恰好使用一次。要求
abc:def:ghi=1:2:3 ,输出所有满足的组合。 - 分析:搞了很久都没做出来,后来上网搜了一下。感谢牛人,原来此题关键在于1~9这九个数字的和只能是45,积只能是362880,所以用这个条件很快就找到了~
- 代码:
void permutation(){ for (int i=123; i<=329; i++) { int f = i, s = 2*i, t = 3*i; int add=0, mul=1; getResult(f,add,mul); getResult(s,add,mul); getResult(t,add,mul); //1~9加起来只能是45, 1~9乘起来只能是362880 if (add==45 && mul==362880) printf("%d %d %d\n",f,s,t); }} void getResult(int val, int& add, int& mul){ int MOD = 10; for (int i=1; i<=3; i++) { add +=(val%MOD); mul *=(val%MOD); val /=MOD; }}
- 题目:用1~9组成3个三位数abc,def和ghi,每个数字恰好使用一次。要求
以上,便是第一篇记录(难得贴了6道题。。。果然还是题目太简单了)
0 0
- 算法竞赛入门经典——习题2.5
- 《算法竞赛入门经典》习题——Chapter 1
- 《算法竞赛入门经典》习题——Chapter 2
- 《算法竞赛入门经典》习题——Chapter 1
- 算法竞赛入门经典 习题笔记
- 算法竞赛入门经典 习题2-10
- 算法竞赛入门经典习题2-10
- 算法竞赛入门经典课后习题1
- 算法竞赛入门经典课后习题2
- 算法竞赛入门经典课后习题3
- 算法竞赛入门经典第一章习题答案
- 算法竞赛入门经典习题3-2
- 算法竞赛入门经典第一章习题解答
- 【算法竞赛入门经典】【第一章】课后习题
- 算法竞赛入门经典 习题2-5
- 算法竞赛入门经典第五章习题
- 算法竞赛入门经典第五章习题
- 算法竞赛入门经典第六章习题
- java 接口Comparable和Comparator的使用
- Android Transition框架使用--介绍(1)
- fedora 16 yum安装mysql后怎样启动,以及添加为系统服务
- IIS的安装部署配置问题
- Volley源码解析,框架综述,使用简述
- 算法竞赛入门经典——习题2.5
- 深入探索C++对象模型笔记
- STL heap底层及使用
- 设计模式C++学习笔记之十(Builder建造者模式)
- OpenStack(4)
- DP背包问题小结(01背包,完全背包,需恰好装满或不需,一维DP、二维DP)
- 修改mysql字符集
- c++11变参模板的展开
- linux c 线程池