社区讨论

第五个点TLE求助!

P1303A*B Problem参与者 6已保存回复 12

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
12 条
当前快照
1 份
快照标识符
@lobw225j
此快照首次捕获于
2023/10/30 03:53
2 年前
此快照最后确认于
2023/11/04 08:56
2 年前
查看原帖
RT 思路是把乘法转换成每一位每一位乘
CPP
#include<bits/stdc++.h>
using namespace std;
int n;
string ans="1",s1;
string jia(string a,string b){
    string over="";
    int c=max(a.length(),b.length());
    for(int i=a.length();i<c;i++)a='0'+a;
    for(int i=b.length();i<c;i++)b='0'+b;
    int flag=0;
    for(int i=c-1;i>=0;i--){
        if(a[i]+b[i]+flag-'0'-'0'<=9){
            int shu=a[i]+b[i]+flag-'0'-'0';
            flag=0;
            over=to_string(shu)+over;
        }
        else{
            int shu=a[i]+b[i]+flag-'0'-'0'-10;
            flag=1;
            over=to_string(shu)+over;
        }
    }
    if(flag==1)over="1"+over;
    return over;
}
string yiweicheng(string a,char b){
    string over="";
    int flag=0;
    for(int i=a.length()-1;i>=0;i--){
        int shu=((a[i]-'0')*(b-'0')+flag)%10;
        int kk=((a[i]-'0')*(b-'0')+flag)/10;
        flag=kk;
        over=to_string(shu)+over;
    }
    if(flag>0)over=to_string(flag)+over;
    return over;
}
string cheng(string a,string b){
    string c="",d="";
    for(int i=0;i<b.length();i++){
        d=yiweicheng(a,b[i]);
        for(int j=1;j<b.length()-i;j++){
            d=d+"0";
        }
        c=jia(c,d);
    }
    return c;
}
int main(){
    string a,b;
    cin>>a>>b;
    if(a=="0"||b=="0"){
    	cout<<"0";
    	return 0;
	}
	cout<<cheng(a,b);
    return 0;
}

回复

12 条回复,欢迎继续交流。

正在加载回复...