大数运算
Posted Surprisez
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数运算相关的知识,希望对你有一定的参考价值。
大数乘法
http://bailian.openjudge.cn/practice/2980/
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 char s1[210], s2[210]; 6 int a1[210], a2[210], ans[410];//数组大小要开对 7 int main() 8 { 9 while(cin >> s1 >> s2){ 10 int l1 = strlen(s1); 11 int l2 = strlen(s2); 12 for(int i = l1-1; i >= 0; i--){ 13 a1[l1-i-1] = s1[i]-‘0‘; 14 } 15 for(int i = l2-1; i >= 0; i--){ 16 a2[l2-i-1] = s2[i]-‘0‘; 17 } 18 memset(ans, 0, sizeof(ans)); 19 for(int i = 0; i < l1; i++){ 20 for(int j = 0; j < l2; j++){ 21 ans[i+j] += a1[i]*a2[j];//被乘数i位*乘数的j位是结果的i+j位 22 } 23 } 24 for(int i = 0; i < l1+l2; i++){ 25 ans[i+1] += ans[i]/10; 26 ans[i] %= 10; 27 } 28 int flag=0; 29 for(int i = l1+l2; i >= 0; i--){ 30 if(!ans[i]&&!flag) ; 31 else { 32 cout << ans[i]; 33 flag=1; 34 } 35 } 36 if(!flag) cout << "0";//如果结果就是0 37 cout << endl; 38 } 39 return 0; 40 }
以上是关于大数运算的主要内容,如果未能解决你的问题,请参考以下文章