算法竞赛入门经典-第二章源代码
来源:互联网 发布:留学低龄化数据 编辑:程序博客网 时间:2024/04/30 15:36
// 程序2-2 7744问题(1)#include <stdio.h>#include <math.h>int main(void){ int a, b, n; double m; for(a = 1; a <= 9; a++) for(b = 0; b <= 9; b++){ n = a*1100 + b*11; m = sqrt(n); if(floor(m+0.5) == m) // 判断整数需要它和它的整数部分比较 printf("%d\n", n); } return 0;}// 程序2-3 7744问题(2)#include <stdio.h>int main(void){ int x, n, hi, lo; for(x = 1; ; x++){ n = x * x; if(n < 1000) continue; if(n > 9999) break; hi = n / 100; lo = n % 100; if(hi/10==hi%10 && lo/10==lo%10) printf("%d\n", n); } return 0;}// 程序2-4 3n+1问题#include <stdio.h>int main(void){ int n, count=0; scanf("%d", &n); while(n > 1) { if(n%2==1) n = n*3+1; else n /= 2; count++; } printf("%d\n", count); return 0;}// 程序2-5 阶乘之和(1)#include <stdio.h>int main(void){ int i, n, fac, S; scanf("%d", &n); for(i = 1, fac = 1, S = 0; i <= n; i++){ fac *= i; S += fac; } printf("%d\n", S%1000000); return 0;}// 程序2-6 阶乘之和(2)#include <stdio.h>#include <time.h>int main(void){ const int MOD = 1000000; int i, n, s, fac; scanf("%d", &n); if(n > 25) n = 25; // 通过实验得出规律 for(i = 1, fac = 1, s = 0; i <= n; i++){ fac = fac * i % MOD; s = (s + fac) % MOD; } printf("%d\n", s); printf("%.2f\n", (double)clock() / CLOCKS_PER_SEC); return 0;}// 程序2-8 数据统计(重定向版)#define LOCAL#include <stdio.h>#define INF 100000000int main(void){#ifdef LOCAL freopen("in.txt", "r", stdin); freopen("out.txt", "w", stdout);#endif // LOCAL int x, n = 0, s = 0, min = INF, max = -INF; while(scanf("%d", &x) == 1){ s += x; if(x < min) min = x; if(x > max) max = x; // printf("x=%d, min=%d, max=%d\n", x, min, max); // “输出中间结果”调试 n++; } printf("%d %d %.3f\n", min, max, (double)s/n); return 0;}// 程序2-9 数据统计(fopen版)#include <stdio.h>#define INF 100000000int main(void){ FILE *fin, *fout; fin = fopen("in.txt", "r"); fout = fopen("out.txt", "w"); int x, n = 0, s = 0, min = INF, max = -INF; while(fscanf(fin, "%d", &x) == 1){ s += x; if(x < min) min = x; if(x > max) max = x; n++; } fprintf(fout, "%d %d %.3f\n", min, max, (double)s/n); fclose(fin); fclose(fout); return 0;}// C++重定向版#include <fstream>using namespace std;ifstream fin("in.txt");ofstream fout("out.txt");int main(void){int a, b;while(fin >> a >> b)fout << a+b << endl;return 0;}// 习题2-1 位数(digit)#include <stdio.h>int main(void){int n, digit = 0;scanf("%d", &n);while(n){digit++;n /= 10;}printf("%d\n", digit);return 0;}// 习题2-2 水仙花数(daffodil)#include <stdio.h>int main(void){int x, y, z, i;for(i = 100; i <= 999; i++){x = i / 100;y = i / 10 % 10;z = i % 10;if (x*x*x + y*y*y + z*z*z == i)printf("%d\n", i);}return 0;}// 习题2-3 韩信点兵(hanxin)#include <stdio.h>int main(void){int a, b, c, i;scanf("%d%d%d", &a, &b, &c);for(i = 10; i <= 100; i++) // 逆向思维if(i%3==a && i%5==b && i%7==c){ printf("%d\n", i); break; }if(i == 101) printf("No answer\n");return 0;}// 习题2-4 倒三角形(triangle)#include <stdio.h>int main(void){int a, b, x, i;scanf("%d", &x);for(a = x; a >= 1; a--){ for(i = 1; i <= 40-a; i++) printf(" "); for(b = 1; b <= 2*a-1; b++) printf("#"); printf("\n");}return 0;}// 习题2-5 统计(stat)#include <stdio.h>#include <stdlib.h>int main(void){ FILE *fin,*fout; fin=fopen("in.txt","rb"); fout=fopen("out.txt","wb"); int n,m; scanf("%d",&n); int *a=(int*)malloc(sizeof(int)*n); for(int i=0;i<n;i++) fscanf(fin,"%d",&a[i]); fscanf(fin,"%d",&m); int count=0; for(int i=0;i<n;i++) if(a[i]<m) count++; fprintf(fout,"%d",count); free(a); fclose(fin); fclose(fout); return 0;}// 习题2-6 调和级数(harmory)#include <stdio.h>int main(void){int n, i;double sum = 0;scanf("%d", &n);for(i = 1; i <= n; i++)sum += 1.0/i;printf("%.3f\n", sum);return 0;}// 习题2-7 近似计算(opproximation)#include <stdio.h>int main(void){int i = 1;double pi = 0, t = 1, x = 1;while (t >= 1e-6){ pi += x*t; i += 2; x = -x; t = 1.0 / i;}printf("%f\n", 4*pi);return 0;}// 习题2-8 子序列的和(subsequence)#include <stdio.h>int main(void){ int n, m, i; double sum = 0; scanf("%d%d", &n, &m); for(i = n; i <= m; i++) sum += 1.0/i/i; // 不要写成sum += 1.0/(i*i),否则会溢出 printf("%.5f\n", sum); return 0;}// 习题2-9 分数化小数(decimal)#include <stdio.h>int main(void){int a, b, c;scanf("%d%d%d", &a, &b, &c);printf("%.*f\n", c, 1.0*a/b);return 0;}// 习题2-10 排列(permutation)#include <stdio.h>int main(void){ // 直接“翻译”题目 int a,b,c,d,e,f,g,h,i; for(a=1;a<=9;a++){ for(b=1;b<=9;b++){ for(c=1;c<=9;c++){ for(d=1;d<=9;d++){ for(e=1;e<=9;e++){ for(f=1;f<=9;f++){ for(g=1;g<=9;g++){ for(h=1;h<=9;h++){ for(i=1;i<=9;i++){ if ((2*(a*100+b*10+c)==(d*100+e*10+f))&&(3*(a*100+b*10+c)==(g*100+h*10+i))&& (a!=b)&&(a!=c)&&(a!=d)&&(a!=e)&&(a!=f)&&(a!=g)&&(a!=h)&&(a!=i)&&(b!=c)&& (b!=d)&&(b!=e)&&(b!=f)&&(b!=g)&&(b!=h)&&(b!=i)&&(c!=d)&&(c!=e)&&(c!=f)&& (c!=g)&&(c!=h)&&(c!=i)&&(d!=e)&&(d!=f)&&(d!=g)&&(d!=h)&&(d!=i)&&(e!=f)&& (e!=g)&&(e!=h)&&(e!=i)&&(f!=g)&&(f!=h)&&(f!=i)&&(g!=h)&&(g!=i)&&(h!=i)) printf("%d,%d,%d\n",a*100+b*10+c,d*100+e*10+f,g*100+h*10+i);}}}}}}}}} return 0;}
0 0
- 算法竞赛入门经典-第二章源代码
- 算法竞赛入门经典-第三章源代码
- 算法竞赛入门经典-第四章源代码
- 算法竞赛入门经典-第五章源代码
- 算法竞赛入门经典 第二章
- 算法竞赛入门经典第二章练习
- 算法竞赛入门经典第二章笔记
- 算法竞赛入门经典第二章
- 算法竞赛入门经典(第二章)
- 算法竞赛入门经典第二章习题
- 算法竞赛入门经典习题 第二章
- 算法竞赛入门经典第二章
- 算法竞赛入门经典 第二章 循环
- 算法竞赛入门经典第二版 第二章
- 算法竞赛入门经典(第三章)源代码
- 算法竞赛入门经典-第一章源代码
- 算法竞赛入门经典(第一章)源代码
- {算法竞赛入门经典}第二章 如何判断整数
- Nginx基本配置与优化
- 机房重构(2)——DataGridView控件使用
- 我为什么向后端工程师推荐Node.js
- spring ioc学习
- wikioi1180 模拟
- 算法竞赛入门经典-第二章源代码
- 面试题解答及记录
- HTML转义字符
- 【学习记录】面向对象的基本概念4
- 2014-08-03 日记
- 优先队列版子
- 【liunx命令学习】nc扫描远程端口
- 算法竞赛入门经典-第三章源代码
- 【Leetcode长征系列】Remove Duplicates from Sorted List II