本文主要是介绍【嵙大OJ】 未完成Problem 1029: 1!+2!+…+k!=?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Problem D: 1!+2!+…+k!=?
Time Limit: 1 Sec Memory Limit: 2 MBSubmit: 13493 Solved: 4962
[ Submit][ Status][ Web Board]
Description
求1!+2!+…+k!=?,并判断是否溢出。
Input
输入为一个正整数k。
Output
若1!+2!+…+k!的值溢出unsigned(无符号整型)的范围输出“overflow”,否则输出1!+2!+…+k!的结果。
Sample Input
5
Sample Output
153
HINT
如果一个值溢出某个变量的数据类型存储范围,但仍然存入该变量,那么存入该变量中的值实际上是什么?
#include <stdio.h>
#include <stdlib.h>
int main()
{unsigned int i, j, k, t, sum = 0, Lsum, flag = 0;scanf("%d", &k);for(i = 1; i <= k; i++){Lsum = sum;for(j = 1, t = 1; j <= i; j++)t *= j;sum += t;if(Lsum > sum) // 不能用sum - Lsum判定,unsigned里没有负数,恒等{flag = -1;; // 是flow不是flew!!break;}}if(flag == 0) // 输出和%d还是%u没关系printf("%u", sum); // 为什么用unsigned定义的还有负数?return 0; // 因为%d
}
这篇关于【嵙大OJ】 未完成Problem 1029: 1!+2!+…+k!=?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!