大数相乘,结果在2000位以内

来源:互联网 发布:手机后花园软件 编辑:程序博客网 时间:2024/06/15 09:19
#include <iostream>#include <cstring>#include <vector>#include <cstdio>#include <ctype.h>#include <cmath>#include <map>#include <deque>#include <algorithm>using namespace std;string num1,num2;int result[2048]={0};int main(){    cin>>num1>>num2;    reverse(num1.begin(), num1.end());//反转    reverse(num2.begin(), num2.end());    int i,j;    for (i=0; i<num1.size(); ++i) {        int c = 0;        for (j=0; j<num2.size(); ++j) {            c = (num1[i]-'0')*(num2[j]-'0')+c+result[i+j];//这里一定要加上原来这个位置的数            result[i+j]= c%10;            c /=10;        }        while (c) {            c = result[i+j]+c;            result[i+j]=c%10;            j++;            c=c/10;        }    }    for (i=2017; i>=0; --i) {        if(result[i]!=0)            break;    }    for (; i>=0; --i) {        printf("%d",result[i]);    }    printf("\n");}

0 0
原创粉丝点击