51nod 1005 大数加法
2016-09-13 20:11
176 查看
51nod 1005 大数加法
心好累。。。
心好累。。。
#include <iostream> #include <stdio.h> #include <string.h> #include <algorithm> #include <math.h> #include <queue> #include <stack> #include <vector> using namespace std; #define INF 0x3f3f3f #define pi acos(-1.0) #define MAX 1000010 #define N 11050 char a ,b ; int num1 ,num2 ; int flag1 = 0,flag2 = 0; void add() { int len1 = strlen(a); int len2 = strlen(b); int k = 0; for(int i = len1-1; i >= flag1; i--) num1[k++] = a[i]-'0'; len1 = k; k = 0; for(int i = len2-1; i >= flag2; i--) num2[k++] = b[i]-'0'; len2 = k; int flag = 0; int lenmax = max(len1,len2); for(int i = 0; i < lenmax; i++) { if(i < lenmax) num1[i] = num1[i]+num2[i]; else if(i<len2 && i>=len1) num1[i] = num2[i]; num1[i] += flag; if(num1[i] > 9) { num1[i] -= 10; flag = 1; } else flag = 0; } if(flag1 && flag2) printf("-"); if(flag == 1) printf("%d",flag); for(int i = lenmax-1; i >= 0; i--) printf("%d",num1[i]); printf("\n"); } void dec() { int len1 = strlen(a); int len2 = strlen(b); int k = 0; for(int i = len1-1; i >= flag1; i--) num1[k++] = a[i]-'0'; len1 = k; k = 0; for(int i = len2-1; i >= flag2; i--) num2[k++] = b[i]-'0'; len2 = k; int lenmax = max(len1,len2); int bian = 0; if(lenmax != len1) bian = 1; else if(len1 == len2) { for(int i = lenmax-1; i >= 0; i--) { if(num1[i] < num2[i]) { bian = 1; break; } else if(num1[i] > num2[i]) break; } } int t ; if(bian == 1) { for(int i = 0 ;i < len1; i++) t[i] = num1[i]; for(int i = 0; i < len2; i++) num1[i] = num2[i]; for(int i = 0; i < len1; i++) num2[i] = t[i]; int temp = len1; len1 = len2; len2 = temp; } int c ; int flag = 0; for(int i = 0; i < lenmax; i++) { if(i < lenmax) c[i] = num1[i]-num2[i]; if(i < len1 && i >= len2) c[i] = num1[i]; c[i] += flag; if(c[i] < 0) { c[i] += 10; flag = -1; } else flag = 0; } if(bian == 1 && flag2 == 1) printf("-"); if(bian == 0 && flag1 == 1) printf("-"); int pan_0 = 0; for(int i = lenmax-1; i >= 0; i--) { if(pan_0 == 0 && c[i] != 0) pan_0 = 1; if(pan_0 == 1) printf("%d",c[i]); } printf("\n"); } int main() { scanf("%s%s",&a,&b); if(a[0] == '-') flag1 = 1; if(b[0] == '-') flag2 = 1; if(flag1 ^ flag2 == 0) add(); else dec(); return 0; } /* 7274263886340608722145353913216918286860 -4745949428771219202495704324129525988945 */
相关文章推荐
- 51Nod-1005-大数加法
- 51Nod 1005 大数加法
- 51nod 1005 大数加法
- 51nod 1005 大数加法(可为负数)
- 51Nod--1005 大数加法
- 51nod 1005 大数加法
- 51Nod-1005 大数加法
- 51nod 1005 大数加法
- 51nod-1005 大数加法
- 51Nod 1005 大数加法
- 51nod 1005 大数加法
- 51nod 1005 大数加法
- 51Nod-1005-大数加法
- 51nod 1005 大数加法
- 51nod 1005 大数加法 大数运算
- 51Nod - 1005 大数加法
- 51nod 1005 大数加法
- 【51Nod】1005 大数加法
- 51Nod-1005 大数加法
- 51nod 1005 大数加法