2 条题解

  • 1
    @ 2023-8-31 15:38:30
    
    
    #include<iostream>
    #include<cstring>
    #include<string>
    #include<cstdio>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    int a[2005]={};
    int b[2005]={};
    int c[4010]={};
    int res[4010];
    string s1,s2; 
    int main(){
    	cin >> s1 >> s2;
    	int lena = s1.length(); 
    	int lenb = s2.length(); 
    	int len = lena+lenb;
    	for(int i=lena-1,j=1;i>=0;i--,j++){
    		a[j] = s1[i] - '0';
    	}
    	for(int i=lenb-1,j=1;i>=0;i--,j++){
    		b[j] = s2[i] - '0';
    	}
    	for(int i=1;i<=lena;i++){
    		for(int j=1;j<=lenb;j++) c[j+i-1] += a[i]*b[j];
    	}
    	int tmp=0;
    	for(int i=1;i<=len;i++){
    		c[i+1] += c[i]/10;
    		c[i]%=10;
    	}
    	while(c[len]==0&&len !=1){
    		len--;
    	}
    	for(int i=len;i>=1;i--){
    		cout << c[i];
    	}
    	return 0;
    }
    
    • 0
      @ 2023-10-20 17:03:41

      高精度

      #include <iostream>
      #include <cstring>
      #define max 1000000
      using namespace std;
      int main()
      {
      	int a[max],b[max],c[max+1];
      	string sa,sb;
      	memset(a,0,sizeof(a));
      	memset(b,0,sizeof(b));
      	memset(c,0,sizeof(c));
      	int x = 0;
      	cin>>sa>>sb;
      	if (sa.size() >= max)
      	{
      		return 0;
      	}
      	if (sb.size() >= max)
      	{
      		return 0;
      	}
      	int lena = sa.size();
      	int lenb = sb.size();
      	for (int i = 0;i < sa.size();i++)
      	{
      		a[lena-i] = sa[i] - '0';
      	}
      	for (int i = 0;i < sb.size();i++)
      	{
      		b[lenb-i] = sb[i] - '0';
      	}
      	int lenc = 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+c[i+j-1];
      			x = c[i+j-1] / 10;
      			c[i+j-1] %= 10;
      		}
      		c[i+lenb] = x;
      	}
      	lenc=lena+lenb;
      	for (int i = 0;i <= lenc;i++)
      	{
      		if (c[lenc] == 0)
      		{
      			lenc--;
      		}
      		if (c[lenc] > 0)
      		{
      			break;
      		}
      	}
      	for (int i = lenc;i >= 1;i--)
      	{
      		cout<<c[i];
      	}
      	return 0;
      }
      
      • 1

      信息

      ID
      304
      时间
      1000ms
      内存
      125MiB
      难度
      2
      标签
      递交数
      60
      已通过
      24
      上传者