大数相乘

来源:转载


红色笔是代表下标


/*大数相乘问题*/#include<iostream>#include<string>using namespace std;void LargeNumbersOperate(string &, string &);int main(){ string str1, str2; while(cin >> str1 >> str2) LargeNumbersOperate(str1, str2); return 0;}void LargeNumbersOperate(string & lOperand, string & rOperand){ int x = 0; int i, j; string result(lOperand.size() + rOperand.size(), '0'); for ( i = lOperand.size() - 1; i >= 0; i--) { for ( j = rOperand.size() - 1; j >= 0; j--) { //把上次进的数x加上 x = x + (lOperand[i] - '0')*(rOperand[j] - '0'); // int p=result[i + j + 1] - '0' + x % 10; x = x / 10; //判断是不是大于10 if (p >= 10) { result[i + j + 1] = p - 10 + '0'; x = x + 1; } else { result[i + j + 1] = p + '0'; } } //注意这个位置为什么加1呢?如果没有1,运行就会报错,越界的错,那是因为 //for ( j = rOperand.size() - 1; j >= 0; j--) //一个回合后,j已经是-1,所以加1是把j变成0 result[i+j+1] = x + '0'; x = 0;//一定要是0哦,因为一个i的循环已经结束 } //输出结果 i = (result[0] == '0') ? 1 : 0; for (i; i < result.size(); i++) cout << result[i]; cout << endl;}




分享给朋友:
您可能感兴趣的文章:
随机阅读: