336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
빅인티져 문제이다.
그냥 생각나는 대로 코드를 작성해서 진짜 내가 생각해도 맞았습니다! 받기만하려고 작성하...........ㅎㅎㅎㅎ 따로 class 를 만들어 보던 해봐야겠다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | #include<cstdio> #include<cstring> using namespace std; const int MAX = 20000; char A[MAX]; char B[MAX]; char temp[MAX]; char C[MAX]; void operation(char* aa, char* bb){ int A_len = strlen(aa); int B_len = strlen(bb); int maxlen = (A_len > B_len) ? A_len : B_len ; B_len--; int allcarry = 0; for(int i = maxlen-1 ; i >= 0 ; i--){ int carry = 0; if(B_len >= 0){ if(aa[i] + bb[B_len] > '0'+'9') carry++; }else{ // Carry calculate if(aa[i] > '9') carry++; } if(B_len >= 0){ if(carry){ C[i] = aa[i] + bb[B_len]- 2*'0' -10 + '0'; // 57 + 57 = 18 if(i-1 >= 0) aa[i-1]++; else allcarry = 1; } else if(!carry) C[i] = aa[i] + bb[B_len]-'0'; B_len--; }else if(B_len < 0){ if(i==0 && aa[i] > '9'){ C[i] = aa[i] - 10; allcarry = 1; }else{ if(carry){ C[i] = aa[i] - 10; aa[i-1]++; }else if(!carry){ C[i] = aa[i]; } } } if(i==0 && allcarry == 1){ for(int i = maxlen ; i > 0 ; i--) C[i] = C[i-1]; C[0] = '1'; } } printf("%s",C); return ; } int main(){ scanf("%s %s",&A, &B); int A_len = strlen(A); int B_len = strlen(B); if(A_len > B_len){ operation(A,B); }else{ operation(B,A); } return 0; } | cs |