"超难题目"高精算法

wurenchao 2022-09-09 21:41:49 40 返回题目

#include #include using namespace std; int main(void) { string str1; //输入两个字符串 string str2; //数组大小决定精度大小 int* arr = new int[101]{ 0 }; int* brr = new int[101]{ 0 }; cin >> str1 >> str2; int len1 = str1.length(); //取得第一个字符串长度 int len2 = str2.length(); //取得第二个字符串长度 int len; for (int i = 0; i < len1; i++) //把第一个字符串中的每一位转换为整数,存放在数组arr中 { arr[i] = str1[len1 - i - 1] - '0'; //减1一定不要减掉了,因为len1是长度,不减1会造成数组越界 } //倒着减的原因是要把字符串中的个位转换到整型数组的第一个位置上 for (int i = 0; i < len2; i++) //把第二个字符串中的每一位转换为整数,存放在数组brr中 { brr[i] = str2[len2 - i - 1] - '0'; } len = (len1 > len2 ? len1 : len2); //取得最大字符串的长度 for (int i = 0; i < len; i++) //模拟加法运算 { arr[i] = arr[i] + brr[i]; arr[i + 1] = arr[i + 1] + arr[i] / 10; arr[i] = arr[i] % 10; } while ((arr[len] == 0) && (len > 0)) //把数组中多余的0去掉 { len--; } for (int i = len ; i >= 0; i--) //逆向输出 { cout << arr[i]; } return 0; }

{{ vote && vote.total.up }}

共 2 条回复

zhaocong2

NM

wurenchao

对不起,不知道如何换行。自己整理一下,功能灰常强大!!!!!!( 1e+100 轻松搞定 )