UVa 465 - Overflow
2012-06-17 20:01
387 查看
判断给出的两数字及其和或积是否在int范围内。int最大为0x7fffffff。数组存放数字,在比较。
代码如下:
代码如下:
#include<stdio.h> #include<string.h> char s[2000], a[2000], b[2000], op[2]; int A[2000], B[2000], S[2000]; void judge() { long long a1, b1, s1; sscanf(a, "%lld", &a1); sscanf(b, "%lld", &b1); sscanf(s, "%lld", &s1); if(a1 > 0x7fffffff) printf("first number too big\n"); if(b1 > 0x7fffffff) printf("second number too big\n"); if(s1 > 0x7fffffff) printf("result too big\n"); } void mult() { int i, j; memset(A, 0, sizeof(A)); memset(B, 0, sizeof(B)); memset(S, 0, sizeof(S)); int len1=strlen(a); for(i=0; i<len1; i++) A[len1-1-i]=a[i]-'0'; int len2 = strlen(b); for(j=0; j<len2; j++) B[len2-1-j]=b[j]-'0'; for(i=0; i<=len2; i++) { int c=0; for(j=0; j<=len1; j++) { S[i+j]+=B[i]*A[j]+c; c=S[i+j]/10; S[i+j]%=10; } } for(i=2000; i>0; i--) if(S[i]) break; for(j=0; j<=i; j++) s[j]=S[i-j]+'0'; s[i+1]='\0'; judge(); } void sum() { int i, j, k; memset(A, 0, sizeof(A)); memset(B, 0, sizeof(B)); memset(S, 0, sizeof(S)); int len1=strlen(a); for(i=0; i<len1; i++) A[len1-1-i]=a[i]-'0'; int len2=strlen(b); for( j=0; j<len2; j++) B[len2-1-j]=b[j]-'0'; int t; if(len1>len2) t=len1; else t=len2; int c=0; for(k=0; k<=t; k++) { S[k]=A[k]+B[k]+c; c=S[k]/10; S[k]%=10; } for(i=2000; i>0; i--) if(S[i]) break; for(j=0; j<=i; j++) s[j]=S[i-j]+'0'; s[i+1]='\0'; judge(); } int main() { memset(a, 0, sizeof(a)); memset(b, 0, sizeof(b)); while(scanf("%s%s%s%*c", a, op, b)==3) { printf("%s %s %s\n",a,op,b); if (op[0] == '+') sum(); else mult(); memset(a, 0, sizeof(a)); memset(b, 0, sizeof(b)); } return 0; }
相关文章推荐
- UVA - 465 Overflow
- UVa 465 Overflow (比较大小难道不应该用double吗)
- UVA 465 - Overflow(大数)
- uva465 - Overflow
- uva 465 Overflow 还是高精度。。。
- UVA_465_Overflow
- UVa 465 Overflow
- UVA 465 Overflow
- UVA465:Overflow
- UVA - 465 Overflow atof的使用方法
- uva 465 - Overflow 大数加法 大数乘法
- UVa 465 Overflow
- UVa 465 - Overflow 解题报告
- △UVA465 - Overflow(判断大数相加相乘是否会溢出)
- UVA465 - Overflow
- UVA - 465 Overflow
- UVA, 465 Overflow
- uva465 overflow
- UVA 465 - Overflow (浮点数的优势)
- UVa 465 - Overflow