3 条题解

  • 0
    @ 2025-5-17 18:44:19
    #include<bits/stdc++.h>
     using namespace std; string a1,b1; int a[505],b[505],c[100005]; int lena,lenb,lenc; int main() { cin>>a1>>b1; lena=a1.size(); lenb=b1.size(); for(int i=1;i<=lena;i++) a[i]=a1[lena-i]-'0'; for(int i=1;i<=lenb;i++) b[i]=b1[lenb-i]-'0'; int x=0; for(int i=1;i<=lena;i++) { x=0; for(int j=1;j<=lenb;j++) { c[i+j-1]+=a[i]*b[j]+x; x=c[i+j-1]/10; c[i+j-1]%=10; } c[i+lenb]=x; }
    
    lenc=lena+lenb;					
    while(c[lenc]==0&&lenc>1)
    	lenc--; 
    for(int i=lenc;i>=1;i--) 
    {
    	cout<<c[i]; 
    }	
    return 0;
    }
    
    
    • 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; }

      • 0
        @ 2023-8-5 15:39:55

        #include<bits/stdc++.h> using namespace std; string a1,b1; int a[505],b[505],c[100005]; int lena,lenb,lenc; int main() { cin>>a1>>b1; lena=a1.size(); lenb=b1.size(); for(int i=1;i<=lena;i++) a[i]=a1[lena-i]-'0'; for(int i=1;i<=lenb;i++) b[i]=b1[lenb-i]-'0'; int x=0; for(int i=1;i<=lena;i++) { x=0; for(int j=1;j<=lenb;j++) { c[i+j-1]+=a[i]*b[j]+x; x=c[i+j-1]/10; c[i+j-1]%=10; } c[i+lenb]=x; }

        lenc=lena+lenb;					
        while(c[lenc]==0&&lenc>1)
        	lenc--; 
        for(int i=lenc;i>=1;i--) 
        {
        	cout<<c[i]; 
        }	
        return 0;
        

        }

        • 1

        信息

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