求分数序列和:int求和,小心溢出
2014-03-30 20:41
411 查看
北大-计算概论
http://ica.openjudge.cn/baseb/04/
看到题目后,第一反应是:这题简单啊,做过好多遍了。于是,刷刷刷就把代码写完了:
输入99,输出的结果却和sample不一样。
于是用tc单步调试,发现运行一段时间后sum会神奇般的变小。反应过来了,int的32767果然太小。
可是换成long,照样不行。
换成double,AC.
#include<stdio.h>
main()
{
int i,n;
double mu,zi,t;//看这儿!
double sum;
scanf("%d",&n);
zi=2;
mu=1;
sum=0;
for(i=0;i<n;i++)
{
sum=sum+1.0*zi/mu;
t=mu;
mu=zi;
zi=t+zi;
}
printf("%.4lf\n",sum);
}
http://ica.openjudge.cn/baseb/04/
看到题目后,第一反应是:这题简单啊,做过好多遍了。于是,刷刷刷就把代码写完了:
#include<stdio.h> main() { int zi,mu,i,n,t; double sum; scanf("%d",&n); zi=2; mu=1; sum=0; for(i=0;i<n;i++) { sum=sum+1.0*zi/mu; t=mu; mu=zi; zi=t+zi; } printf("%.4lf\n",sum); }
输入99,输出的结果却和sample不一样。
于是用tc单步调试,发现运行一段时间后sum会神奇般的变小。反应过来了,int的32767果然太小。
可是换成long,照样不行。
换成double,AC.
#include<stdio.h>
main()
{
int i,n;
double mu,zi,t;//看这儿!
double sum;
scanf("%d",&n);
zi=2;
mu=1;
sum=0;
for(i=0;i<n;i++)
{
sum=sum+1.0*zi/mu;
t=mu;
mu=zi;
zi=t+zi;
}
printf("%.4lf\n",sum);
}
相关文章推荐
- 1083 习题5-10 分数序列求和
- 分数序列求和
- 第八周—OJ分数序列求和
- 分数序列规律求和
- 第八周 OJ 分数序列求和
- 1193分数序列求和
- 分数序列求和
- POJ NOI MATH-7829 神奇序列求和
- java int 乘法溢出问题
- 最大子序列求和问题(1)-解法之一分治法
- 序列求和
- C#趣味程序---真分数序列
- 蓝桥—BEGIN-2 序列求和
- 【蓝桥杯练习系统】 入门训练 序列求和
- 蓝桥杯BEGIN-2 序列求和
- 百练--求分数序列和---2683
- 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前n项之和。
- 有一个分数序列:2/1, 3/2, 5/3, 8/5, 13/8, …编写程序求出这个序列的前n项之和。 输入
- 序列求和
- 计算斐波那契分数序列前n项之和(n是某个常数,波那契分数序列为2/1,3/2,5/3,8/5,...)