2 条题解

  • 0
    @ 2025-3-22 14:58:05

    #include<bits/stdc++.h>//导入输出工具库 using namespace std;//规定一个范围空间 叫std

    string mull(string s1 , string s2){ //1 - 翻转

    reverse(s1.begin() , s1.end()); 
    reverse(s2.begin() , s2.end()); 
    
    //2 - 把所有的字符 变成 数字 放到对应的数组中
    
    int a[1000] = {0}, b[1000] = {0}, c[1000] = {0};
    for(int i = 0;i < s1.size();i++)	a[i] = s1[i] - '0';
    for(int i = 0;i < s2.size();i++)	b[i] = s2[i] - '0';
    
    //3 - 两两数进行相乘 循环嵌套完成
    for(int i = 0;i < s1.size();i++){
    	for(int j = 0;j < s2.size();j++){
    		c[i + j] += a[i] * b[i];
    	}
    }
    
    //4 - 处理进位问题 c的位置如果是 大于 10 表示当前位置需要进位
    int len = s1.size() + s2.size(); // 任意位数相乘 答案最大的位数
    for(int i = 0;i < len;i++){
    	if(c[i] >= 10){//当前的位数需要进位 
    		c[i + 1] += c[i] / 10;//把当前进位 给到下一位
    		c[i] = c[i] % 10;//取当前的个位 就是答案 
    	}
    } 
    
    //5 - 处理前导零问题
    while(len > 1 && c[len - 1] == 0){
    	len--;
    } 
    string ans;
    //6 - 把 数组 变成 字符串
    for(int i = 0;i < len;i++){
    	ans = char(c[i] + '0') + ans;
    } 
    return ans;
    

    } int main()//主程序的入口 { string s1 , s2; cin >> s1 >> s2; cout << mull(s1 , s2); return 0; }

    信息

    ID
    1678
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    226
    已通过
    51
    上传者