首页 > 代码库 > hdu_1003

hdu_1003

 1 // hdu 1002 2 // high precision  3 // Dec.28 2014 4  5 #include <cstdio> 6 #include <cstring> 7 #include <algorithm> 8  9 #define MaxL 111110 11 int T, a[MaxL], b[MaxL], s[MaxL], a_len, b_len, s_len;12 char str_a[MaxL], str_b[MaxL];13 14 int main(int argc, char const *argv[])15 {16     scanf("%d",&T);17     for(int case_num = 1; case_num <= T; ++case_num){18         a_len = b_len = 0;19         // get big number by character string as buffer20         scanf("%s", str_a);21         scanf("%s", str_b);22         memset(a, 0, sizeof(a));23         memset(b, 0, sizeof(b));24         memset(s, 0, sizeof(s));25         // read the number into int array in reverse order26         for(int i = strlen(str_a)-1; i >= 0; --i)27             a[++a_len] = str_a[i] - 0;28         for (int i = strlen(str_b)-1; i >= 0; --i)29             b[++b_len] = str_b[i] - 0;30         // s_len is the longer one between a and b31         s_len = std::max(a_len, b_len);32         int carry = 0;33         34         for(int i = 1; i <= s_len; ++i){35             int temp = a[i] + b[i] + carry;36             carry = temp / 10 ;37             s[i] = temp % 10;38         }39         if(carry > 0)40             s[++s_len] = carry;41         if(case_num > 1)42             printf("\n");43         printf("Case %d:\n%s + %s = ", case_num, str_a, str_b);44         for(int i = s_len; i > 0; --i)45             printf("%d", s[i]);46         printf("\n");47     }48     return 0;49 }

 

hdu_1003