计算a+b
第一个数为数据组数n
接下来n行,每行2个整数a,b(a,b在long long范围内)
对于每组数据,输出一行,a+b的值
1
1 2
3
0<n<100
主要问题就是两个大的或者小的long long型数字相加时的数据溢出问题,需要特殊处理。
这里附上 int、long、long long的取值范围
unsigned int 0~4294967295
int -2147483648~2147483647
unsigned long 0~4294967295
long -2147483648~2147483647
long long的最大值:9223372036854775807
long long的最小值:-9223372036854775808
unsigned long long的最大值:18446744073709551615
__int64的最大值:9223372036854775807
__int64的最小值:-9223372036854775808
unsigned __int64的最大值:18446744073709551615
比如-9223372036854775808+(-9223372036854775808)结果超出long long可表示的数据范围。
2020-09-19 21:47:00
//add two numbers of long long #include<stdio.h> #include<math.h> void addition(long long a, long long b){ if(a==0 && b==0) return; else{ int c = (int)(a%10+b%10); if(c<10 && c>-10){ addition(a/10, b/10); printf("%lld", abs(c)); } else if(c>=10 || c<=-10){ addition(a/10, b/10+c/10); printf("%lld", abs(c%10)); } } } int main(){ long long a, b; int n; scanf("%d", &n); while(n--){ scanf("%lld%lld", &a, &b); if(a>0 && b>0){ addition(a, b); printf("\n"); } else if(a<0 && b<0){ printf("-"); addition(a, b); printf("\n"); } else printf("%lld\n", a+b); } }
E1-A简单的a+b-复习int、long、long long的取值范围
原文:https://www.cnblogs.com/mylovegrow/p/13697792.html