标签:
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 13500 | Accepted: 6968 |
11111111111111
1111111111
12345679011110987654321
高精度乘法。。
CODE:
#include <iostream> #include <cstdio> #include <cstring> #define REP(i, s, n) for(int i = s; i <= n; i ++) #define REP_(i, s, n) for(int i = n; i >= s; i --) #define MAX_N 2000 using namespace std; char a[MAX_N], b[MAX_N]; int la, lb, lc; int int_a[MAX_N], int_b[MAX_N], int_c[MAX_N]; int main(){ scanf("%s%s", a + 1, b + 1); la = strlen(a + 1); lb = strlen(b + 1); memset(int_a, 0, sizeof(int_a)); memset(int_b, 0, sizeof(int_b)); memset(int_c, 0, sizeof(int_c)); REP(i, 1, la) int_a[la - i + 1] = a[i] - ‘0‘; REP(i, 1, lb) int_b[lb - i + 1] = b[i] - ‘0‘; REP(i, 1, la){ int x = 0; REP(j, 1, lb){ int_c[i + j - 1] = int_a[i] * int_b[j] + x + int_c[i + j - 1]; x = int_c[i + j - 1] / 10; int_c[i + j - 1] %= 10; } int_c[i + lb] = x; } lc = la + lb; while(int_c[lc] == 0 && lc > 1) lc--; REP_(i, 1, lc) printf("%d", int_c[i]); return 0; }
标签:
原文地址:http://www.cnblogs.com/ALXPCUN/p/4535417.html