C语言OJ项目参考(1034) 求值
来源:互联网 发布:python base64 decode 编辑:程序博客网 时间:2024/04/28 16:20
(1034) 求值
Description
求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字。
Input
n
Output
和
Sample Input
5
Sample Output
153
参考解答
#include <stdio.h>int main ( ){ int n, i; long fact=1, sum=1; scanf("%d",&n); for(i=2;i<=n;i++) { fact=fact*i; sum+=fact; } printf("%ld", sum); return 0;}
本题中未指定n的大小。实际上,当n≥13时,n!就已经超过int型数据的取值范围而溢出。所以,本题中,将fact、sum定义为long型,以解决溢出问题。
目前在32位的系统中,long型与int都占4个字节。结果是,n≥13时,即使fact、sum定义为long型,溢出在所难免。我在编这道程序时,在我的机器上测试,int型的结果与long型的结果一致。
神奇的是,在OJ平台上,fact、sum定义为int型为错,当它们为long型时却对了。因为,代码被提交到了服务器,服务器是64位的,long型为8个字节。
另外,下面的程序是最保险的:
#include <stdio.h>int main ( ){ int n, i; long long int fact=1, sum=1; scanf("%d",&n); for(i=2;i<=n;i++) { fact=fact*i; sum+=fact; } printf("%lld", sum); return 0;}
这里,将fact、sum定义为long long int型,即使32位系统,当n≥13时,变可以得到正确的解答,这时,输出结果时,格式控制该用%lld。不过,在32位系统上安装的CodeBlocks会给我们出来2个warning,不要理会即是。
0 1
- C语言OJ项目参考(1034) 求值
- C语言OJ项目参考(1609) 等比数列
- C语言OJ项目参考(2021)汉诺塔
- C语言OJ项目参考(1021)按要求输出
- C语言OJ项目参考(2493)四则运算
- C语言OJ项目参考(2681)求三角形面积
- C语言OJ项目参考(2013)一元二次方程Ⅱ
- C语言OJ项目参考(1030)求奖金总数
- C语言OJ项目参考(2399)求倒数和
- C语言OJ项目参考(1992)分数序列
- C语言OJ项目参考(1039) 小球自由下落
- C语言OJ项目参考(2001) 打印数字图形
- C语言OJ项目参考(1032) 统计字符个数
- C语言OJ项目参考(1923) ASCII码排序
- C语言OJ项目参考(2506) 切面条
- C语言OJ项目参考(2472) 大帆玩英雄联盟
- C语言OJ项目参考(1915) 第几天
- C语言OJ项目参考(2698) 大奖赛计分
- JAVA 的两种流 字节流 InputStream OutputStream 字符流 Reader Writer
- 练习题目-动态第k小
- 使用Gradle自动化构建多类型apk包
- MULE
- [转载]QT框架的一个截图工具
- C语言OJ项目参考(1034) 求值
- js return void 0; 的疑问
- CSS3_Node2_背景渐变&蒙版&倒影
- 算法之—冒泡排序
- C语言OJ项目参考(1039) 小球自由下落
- ionic之样式button
- 初识Mybatis整合______整合教程(Spring+springMVC+Mybatis)
- 1622-5 孔富晨 总结《2016年10月18日》 【连续第18日总结】
- 关于计算机和程序