3 条题解

  • 0
    @ 2023-8-22 9:54:33
    using namespace std;
    char a1[114514],b1[114514];
    int a[114514],b[114514],c[114514];
    int main(){
    	int lc=1,x=0;
    	cin>>a1>>b1;
    	int la=strlen(a1);
    	int lb=strlen(b1);
    	for(int i=0;i<la;i++) a[la-i]=a1[i]-'0';
    	for(int i=0;i<lb;i++) b[lb-i]=b1[i]-'0'; 
    	for(int i=1;i<=la;i++){
    		x=0;//每一次循环开始前,进位归零 
    		for(int j=1;j<=lb;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;
    			lc++;
    		}
    		c[lb+i]=x;
    	}
    	while(c[lc]==0&&lc>1) lc--;
    	for(int i=lc;i>=1;i--) cout<<c[i];
    	return 0;
    }
    
    • 0
      @ 2023-8-22 9:51:31
      #include<bits/stdc++.h>
      using namespace std;
      char a1[114514],b1[114514];
      int a[114514],b[114514],c[114514];
      int main(){
      	cin>>a1>>b1;
      	int la=strlen(a1),lb=strlen(b1);
      	for(int i=0;i<la;i++) a[la-i]=a1[i]-'0';
      	for(int i=0;i<lb;i++) b[lb-i]=b1[i]-'0';
      	int lc=1;
      	int x;
      	for(int i=1;i<=la;i++){
      		x=0;
      		for(int j=1;j<=lb;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;
      			lc++;
      		}
      		c[lb+i]=x;
      	}
      	while(c[lc]==0&&lc>1) lc--;
      	for(int i=lc;i>=1;i--) cout<<c[i];
      	return 0;
      }~~~~
      
      • 0
        @ 2023-8-22 8:19:26
        #include<bits/stdc++.h>
        using namespace std;
        char a1[9999],b1[9999];//用字符数组保存 
        int a[9999],b[9999],c[9999];//用于计算的整形数组,a、b为字符数组逆序转换而来,c为最终的答案 
        int main(){
        	cin>>a1>>b1;//输入数据 
        	int la=strlen(a1),lb=strlen(b1);//计算字符数组长度 
        	for(int i=0;i<la;i++) a[la-i]=a1[i]-'0';//逆序保存 
        	for(int i=0;i<lb;i++) b[lb-i]=b1[i]-'0';//注意,这里数组的长度为1-la/lb 
        	int lc=la+lb;//分别表示进位和表示计算的位置 
        	for(int i=1;i<=la;i++){//相乘及处理进位 
        		for(int j=1;j<=lb;j++){
        			c[i+j-1] += a[i]*b[j];
        			c[i+j] +=c[i+j-1]/10;
        			c[i+j-1] %= 10;
        		}
        	}
        	while(c[lc]==0&&lc>1) lc--;//去掉前面多余的0,本身是0就保存 
        	for(int i=lc;i>=1;i--) cout<<c[i];//打印 
        	return 0;
        }
        
        • 1

        信息

        ID
        284
        时间
        1000ms
        内存
        32MiB
        难度
        4
        标签
        递交数
        44
        已通过
        23
        上传者