大数乘法(分块乘法)
#include<iostream>
#include<stdio.h>
using namespace std;
void bigmul(int x, int y, int r[])
{
int base = 10000;
int x2 = x / base;
int x1 = x % base;
int y2 = y / base;
int y1 = y % base;
int m1 = x1 * y1;
int m2 = x2 * y1;
int m3 = x1 * y2;
int m4 = x2 * y2;
r[3] = m1 % base;
r[2] = m1 / base + m3 % base + m2 % base;
r[1] = m2/base+m3/base+m4%base; // 填空
r[0] = m4 / base;
r[1] = r[1] + r[2]/base; // 填空//r[2]可能有进位到r[1]块的
r[2] = r[2] % base;
r[0] = r[0] + r[1] / base;//r[1]可能有进位到r[0]块的
r[1] = r[1] % base;
}
int main(int argc, char* argv[])
{
int x[] = {0,0,0,0};
//87654321 12345678
bigmul(214,25, x);
printf("%d %d %d %d\n", x[0],x[1],x[2],x[3]);
return 0;
}