40求调,悬棺

P1303 A*B Problem

xiozhi @ 2024-10-30 20:09:28

用最简单的方法做的

#include<bits/stdc++.h>
using namespace std;
int main(){
    long long a,b;
    cin >> a >> b;
    cout << a*b;
    return 0;
}

dalao们 窝不礼貌的求个互关哈pwp


by xiozhi @ 2024-10-30 20:12:47

#include<bits/stdc++.h>
using namespace std;
int main(){
    long long a,b,ans;
    cin >> a >> b;
    ans = a*b;
    cout << ans;
    return 0;
}

都一样哈哈蛤(苦笑)


by jzjr @ 2024-10-30 20:15:42

你也许需要: 高精度

long long 最大只有 2^{63}-1 大约 10^{18}

而本题有 10^{2000} 不足以储存。


by chin_162 @ 2024-10-30 20:20:11

应该是高精度写法,10的2000次方,longlong不够吧,longlonglonglong也不够(笑 cpp 附带满分代码:

#include<bits/stdc++.h>
using namespace std;
int a[1000000],b[1000000],c[1000000];
int main(){
    string s1,s2;
    cin>>s1>>s2;
    reverse(s1.begin(),s1.end());
    reverse(s2.begin(),s2.end());
    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';
    }
    for(int j=0;j<s2.size();j++){
        for(int i=0;i<s1.size();i++){
        c[i+j]+=a[i]*b[j];
        if(c[i+j]>=0){
            c[i+j+1]+=c[i+j]/10;
            c[i+j]%=10;
        }
    }
    }
    int len=999999;
    while(c[len]==0&&len>0){
        len--;
    }
    for(int i=len;i>=0;i--){
        cout<<c[i];
    }
    return 0;
}
//?

by chenxitao @ 2024-11-01 20:20:03

#include<bits/stdc++.h>
using namespace std;
int c[2010],d[2010],e[2010],s[2010];
int main(){
    int f,g,h,w;
    string a,b;
    cin>>a>>b;
    f=a.length();
    g=b.length();
    w=f+g;
    h=max(f,g);
    for(int i=0;i<f;i++)c[i]=a[f-i-1]-'0';
    for(int i=0;i<g;i++)d[i]=b[g-i-1]-'0';
    for(int i=0;i<f;i++)for(int j=0;j<g;j++)s[i+j]=s[i+j]+c[i]*d[j];
    for(int i=0;i<w;i++){
        if(s[i]>=10){
            s[i+1]+=s[i]/10;
            s[i]%=10;
        }
    }
    for(int i=w-1;i>0 && s[i]==0;i--)w--;
    for(int i=w-1;i>=0;i--)cout<<s[i];
}

求关


by chenxitao @ 2024-11-01 20:22:00

@chin_162 数组空间别开太大,有的时候可能会爆空间


by xiozhi @ 2024-11-06 19:54:15

@jzjr @chin_162 @chenxitao 已关


|