不得不说,这都有20分,我也是没什么话说了

P1303 A*B Problem

SpecialSpec @ 2017-07-15 21:57:19

#include<iostream>
using namespace std;
int main()
{
    int a,b;
    cout<<a*b<<endl;
    return 0;
}//连输入都没有都有20分哈哈哈哈哈哈哈

by puqy @ 2017-08-02 19:15:52

#include<iostream>
#include<cmath>
#include<algorithm>
#include<map>
#include<queue>
#include<iomanip>
#include<stack>
#include<cstring>
#include<ctime>
#include<cstdio>
#include<vector>
using namespace std;
int a[100005],b[100005],c[100005];
int main()
{
    string s1,s2;
    cin>>s1>>s2;
    if(s1[0]=='0' || s2[0]=='0')
    {
        cout<<0;
        return 0;

}//特判有0的情况;

        int l1=s1.size(),l2=s2.size();
    memset(a,0,sizeof(a));
    memset(b,0,sizeof(b));
    memset(c,0,sizeof(c));//赋初值
    for(int i=0;i<=l1-1;i++)
        a[l1-i]=s1[i]-'0';
    for(int i=0;i<=l2-1;i++)
        b[l2-i]=s2[i]-'0';//把数组倒过来存储
        int i,k=0,d,e,j;//k用来进位什么的。。。
    for(i=1;i<=l2;i++)
    {
        k=0;
        for(j=1;j<=l1;j++)
        {
            c[i+j-1]=a[j]*b[i]+c[i+j-1];
            k=c[i+j-1]/10;
            c[i+j-1]%=10;
            c[i+j]+=k;
        }
    }
    k=l1+l2;//这里的k直接拿来其他用了(结果的长度);
    for(int j=l1+l2;j>=2;j--)
    if(c[j]!=0)
    break;
    else k--;//去前导0(当然用while更简单,但是懒得改了)
        for(int j=k;j>=1;j--)
    cout<<c[j];//输出
        return 0;
}

|