http://acm.hdu.edu.cn/showproblem.php?pid=1001
/(ㄒoㄒ)/~~原来我如此的弱,简直不测不知道,一测就吓死宝宝了/(ㄒoㄒ)/~~
提交了10次,也是够了,一直没意识到的问题就是溢出问题,还有就是奇偶问题
三种做法,实际上是两种。
1 #include<stdio.h> 2 3 int main() 4 5 { 6 7 int i,n;__int64 sum;//这里需要把sum的类型设置为__int64,否则会溢出。 8 9 while(scanf("%d",&n)!=EOF) 10 11 { 12 sum=0; 13 14 for(i=1;i<=n;i++) 15 16 sum+=i; 17 18 printf("%I64d\n\n",sum); 19 20 21 22 } 23 24 return 0; 25 26 }
第二:
1 #include<stdio.h> 2 int main() 3 { 4 int n; 5 __int64 sum; 6 while (scanf_s("%d",&n)!=EOF) 7 { 8 sum = 0; 9 if (n % 2 == 0) 10 sum = (n / 2)*(n + 1); 11 else 12 13 sum = (1 + n) / 2*n; 14 printf("%I64d\n\n",sum ); 15 16 } 17 return 0; 18 }
至于第三种就是把sum用浮点输出,这样就可以不用讨论奇偶啦~~~~~~~关于溢出,就是先除2再乘,这样防止溢出,第一次用__Int64,简直棒棒的,溢出问题还是要好好注意,因为不然………………………………后果很严重2333333333333333
时间: 2024-11-03 19:09:28