算法竞赛入门经典之第2章循环结构
leafinsnowfield
这个作者很懒,什么都没留下…
展开
-
输出1,2,3,……,n
#include int main(){ int n; int i; scanf("%d",&n); for(i=0;i<=n;i++){ printf("%d\n",i); } return 0;}原创 2014-10-04 02:20:47 · 606 阅读 · 0 评论 -
倒三角形
#include int main(){ int n; int i; int j; int count=0; while(scanf("%d",&n)==1){ if(n=1){ for(i=n;i>=1;i--){ j=count; while(j>0){ printf(" "); j--; } for(j=1;j<=2*原创 2014-10-08 17:06:02 · 430 阅读 · 1 评论 -
韩信点兵
#include int main(){ int a,b,c; int number; while(scanf("%d%d%d",&a,&b,&c)==3){ for(number=10;number<=100;number++){ if() } } return 0;}原创 2014-10-08 13:28:07 · 548 阅读 · 1 评论 -
水仙花数
#include int main(){ int number; int a,b,c; for(number=100;number<=999;number++){ a=number%10; b=number/100; c=number/10%10; if(a*a*a+b*b*b+c*c*c==number){ printf("%d\n",number); } }原创 2014-10-08 12:59:30 · 327 阅读 · 0 评论 -
位数
#include int main(){ int data; int i=1; while(scanf("%d",&data)==1){ //printf("%d",data); while(data/10!=0){ i++; data/=10; } printf("%d\n",i); i=1; } return 0;}注意最后计数器变为初值原创 2014-10-08 12:49:06 · 266 阅读 · 0 评论 -
c++的输入输出
#include using namespace std;int main(){ int a,b; while(scanf("%d%d",&a,&b)==2){ printf("%d\n",a+b); } return 0;}原创 2014-10-08 12:14:17 · 699 阅读 · 0 评论 -
浮点数陷阱
#include int main(){ double i; for(i=0;i!=10;i+=0.1){ printf("%.1lf\n",i); } return 0;} 浮点数的计算时有原创 2014-10-08 12:15:46 · 702 阅读 · 0 评论 -
64位整数
输入正整数n,统计它的原创 2014-10-08 12:14:17 · 965 阅读 · 0 评论 -
3n+1问题(错误的应为数据会溢出)(你<=10^9)
总结写程序注意什么是终止原创 2014-10-07 12:03:49 · 589 阅读 · 0 评论 -
阶乘之和书本上的程序方法一
注意:1factorial表示阶乘2赋值原创 2014-10-07 12:01:39 · 365 阅读 · 0 评论 -
Int与double的最大值的大小比较
int和long都是用32位来存储最大值和最小值分别为2147483647(109), -2147483648;long long 是用64位来存储最大值和最小值分别为9223372036854775807(1018),-9223372036854775808;float的最大值和最小值分别为3.40282e+038(1038),1.17549e-038(10-38);double的最原创 2014-10-07 12:02:06 · 4487 阅读 · 0 评论 -
统计但是还没有进行重定向和fopen
#include #define MAXLINE 100int main(){ int number; int m,count=0; int n[MAXLINE]; while(scanf("%d",&number)==1){ while(i<=number-1){ i=0; scanf("%d",&n[i]); i++; } i=0; scanf("原创 2014-10-08 17:18:05 · 402 阅读 · 0 评论 -
调和级数
#include int main(){ float sum=0.000; int n; int i=1; while(scanf("%d",&n)==1){ while(i<=n){ printf("i=%d\n",i); sum+=(1.000/i); i++; } printf("%.3f\n",sum); i=1; sum=0; } re原创 2014-10-08 18:26:58 · 531 阅读 · 0 评论 -
关于在<math.h>头文件中的floor()sqrt()
floor(x)表示不大于x的最大原创 2014-10-04 02:33:12 · 3182 阅读 · 0 评论 -
关于伪代码
1不拘一格的使用伪代码思考和描述算法是一种好方法2把原创 2014-10-04 02:24:30 · 593 阅读 · 0 评论 -
排列(自己写的运用了许多循环结构)
#include int main(){ int a,b,c; int number1,number2,number3; for(a=1;a<=9;a++){ for(b=2;b<=9;b++){ if(b==a){ b++; } for(c=3;c<=9;c++){ if(c==b){ c++; }else{ } }原创 2014-10-09 14:05:18 · 290 阅读 · 0 评论 -
转载的好写法关于排列(经过个人修改)
题目:用1,2,3……9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi = 1:2:3。输出所有解。提示:不必太动脑筋。分析:上学期院里组织比赛的一道题,利用数组,a[1]~a[9]赋值为0,令a[出现的数字] = 1,若a[1] + a[2] + …… +a[9] == 9,则全部数字都出现。源码:[cpp] view plaincopy在CO转载 2014-10-09 21:39:23 · 372 阅读 · 0 评论 -
分数变小数该方法不可行
#include int main(){ int a,b; double n,c; int intergate; while(scanf("%d%d%d",&a,&b,&c)==3){ //printf("a=%d b=%d c=%d\n",a,b,c); if(a0&&b>0&&b0&&c<=100){ intergate=a/b; printf("%d",inte原创 2014-10-09 21:00:36 · 446 阅读 · 0 评论 -
分数变小数可行的方法把整数和分数分开打用%以及POW
#include int main(){ int a,b,c,pow,mod,n; while(scanf("%d%d%d",&a,&b,&c)==3){ printf("a=%d b=%d c=%d\n",a,b,c); n=a/b; printf("%d",n); if(c>0&&c<=100){ printf("."); pow=10; while(c原创 2014-10-09 21:12:55 · 835 阅读 · 0 评论 -
1006
#include #define YES 1#define NO 0#define MAXLINE 100int main(){ char data[MAXLINE]; char password[27]; int i=0; password[0]='V'; password[5]='A' for(i=1;i<=4;i++){ password[i]=password[i-原创 2014-10-08 23:04:54 · 349 阅读 · 0 评论 -
31页的2.4.6上机练习还没有做还有对文件操作目前还不熟练
31页的2.4.6上机练习还没有做还有对文件操作目前还不熟练原创 2014-10-08 12:39:28 · 363 阅读 · 0 评论 -
子序列的和(注意溢出问题)
输入两个正整数n分析:还是for循环累加。本题陷阱在于n比较大时,n*n会溢出,所以 1/n^2 应该用 1/n/n 而不是 1/(n*n)。原创 2014-10-08 22:00:44 · 1089 阅读 · 0 评论 -
近似计算
#include int main(){ int sum=0; int i; for(i=1;i<1000000;i+=2){ if((i+1)%2==0){ sum+=1/i; }else{ sum-=1/i; } } printf("")}原创 2014-10-08 18:41:17 · 391 阅读 · 0 评论 -
3n+1问题
对于任意大于1的自然数n,若n为奇数,则将n变成3n+1,否则变为n的一半,经过若干次这样的变换,一定会使n变为1,输入n,输出变换的次数。n<=10^9先贴出两个我的程序:#include#includeint main(){ double n,count=0; scanf("%lf",&n); while(n>1) { if((int)n%2==1) n=n*3+1;转载 2014-10-04 04:57:42 · 1185 阅读 · 0 评论 -
错误的程序之阶乘之和测试程序的快慢程度(加一个计时器)<time.h>和clock()函数
#include int main(){ int i,j,n; int s=0; scanf("%d",&n); for(i=1;i<=n;i++){ int factorial=1.0; for(j=1;j<=i;j++){ factorial*=j; } s+=factorial; } printf("%d\n",s%1000000); return 0原创 2014-10-07 12:00:54 · 391 阅读 · 0 评论 -
阶乘之和的正确程序(没有乘法的溢出问题以及效率低下的解决方法)
#include #include int main(){ const int MOD=1000000; int i,j,n; int s=0; scanf("%d",&n); for(i=1;i<=n;i++){ int factorial=1.0; for(j=1;j<=i;j++){ factorial=factorial*j%MOD; } s=(fa原创 2014-10-07 11:59:00 · 621 阅读 · 0 评论 -
计数器和累加器的使用循环结构程序设计中的常见问题有2个以及解决方法
1是算术运算溢出2程序效率低下原创 2014-10-06 16:39:08 · 1305 阅读 · 0 评论 -
关于管道小技巧的的定义以及优点
管道可以将数据保存在命令行中原创 2014-10-06 16:40:43 · 399 阅读 · 0 评论 -
数据统计的错误分析与改进
#include int main(){ int x,n=0,min,max,s=0; while(scanf("%d",&n)==1){ s+=x; if(x<min){ min=x; } if(x>max){ max=x; } n++; } printf("%d %d %.3lf\n",max,min,(double)s/n); return 0原创 2014-10-06 16:39:26 · 733 阅读 · 0 评论 -
在程序中使用文件的方法
最简单的方法是使用输出输入重定向,printf写入文件原创 2014-10-06 16:36:15 · 381 阅读 · 0 评论 -
(采用标准输入输出)在本机测试时用文件重定向,一旦提交到比赛就可以方面删除重定向语句的范例
#define LOCAL#include #define INF 100000000int main(){#ifdef LOCAL freopen("data.in","r",stdin); freopen("data.out","w",stdout);#endif int x,n=0,min=INF,max=-INF,s=0; while(scanf("%d",&x)==1)原创 2014-10-04 15:46:13 · 566 阅读 · 0 评论 -
有问题的阶乘之和运行操作行得到输出结果和运行时间的表格(应为还没有看附录)
#include #include int main(){ const int MOD=1000000; int i,j,n; int s=0; scanf("%d",&n); if(n>25){ n=25; } for(i=1;i<=n;i++){ int factorial=1.0; for(j=1;j<=i;j++){ factorial=factor原创 2014-10-06 16:37:30 · 359 阅读 · 0 评论 -
关于库函数中scanf函数有返回值以及如果停止运行的方法(windows和linux)
scanf函数返回的是成功输入的变量的个数当输入结束时scan原创 2014-10-06 16:37:09 · 838 阅读 · 0 评论 -
正确的程序(数据统计)
#include #define INF 10000000int main(){ int x,n=0,min=INF,max=-INF,s=0; while(scanf("%d",&x)==1){ s+=x; if(x<min){ min=x; //printf("min=%d\n",min); } if(x>max){ max=x; //print原创 2014-10-06 16:37:04 · 328 阅读 · 0 评论 -
数据统计 题目是输入一些整数,求出它们的最大值,最小值和平均值
题目:是输入一些整数,求出它们的最大值,最小值和平均值( )原创 2014-10-06 16:38:50 · 12338 阅读 · 0 评论 -
竞赛的规则
注意1并不是所有算法竞赛允许你用程序读写文件。甚至有的竞赛允许访问文件但不允许你用freopen这样的重定向方式读写文件。原创 2014-10-04 14:51:06 · 398 阅读 · 0 评论 -
数据统计(fopen版)
#include #define INF 1000000000int main(){ FILE *fin,*fout; fin=fopen("data.in","rb"); fout=fopen("data.out","wb"); int x,n=0,min=INF,max=-INF,s=0; while(fscanf(fin,"%d",&x)==1){ s+=x; if(x原创 2014-10-06 20:56:46 · 545 阅读 · 0 评论 -
数据统计 程序中可能出现的错误
#include int main(){ int n; float max,min,average,sum; int count=0; scanf("%d",&n); max=n; min=n; sum=0; while(n<=1000){ count++; if(n>max){ max=n; }else if(n<min){ n=min; } s原创 2014-10-07 11:58:11 · 459 阅读 · 0 评论 -
-o2编译
编译器的优化级别 -O2代表2级优化,-O3代表3级也是最高级优化(嵌入式软件喜欢用O3)原创 2014-10-07 11:59:36 · 1627 阅读 · 0 评论 -
输出技巧方法2种
#include int main(){ int n; scanf("%d",&n); int i; for(i=2;i<=(2*n);i=i+2){ printf("%d\n",i); } return 0;}上面是方法1原创 2014-10-07 11:58:13 · 277 阅读 · 0 评论