poj 2389 Bull Math

大数相乘的模板。。
自己写一个竖式就明白了。。
malloc一下更机智。。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
#define maxn 10010
void cheng(char *a,char *b)
{
    int alen=strlen(a);
    int blen=strlen(b);
    int ans[maxn*2]={0};
    char c[maxn];
    for(int i=0;i<alen;i++)
    {
        for(int j=0;j<blen;j++)
        {
            ans[i+j+1]+=(a[i]-'0')*(b[j]-'0');
        }
    }
    for(int i=alen+blen-1;i>=0;i--)
    {
        if(ans[i]>=10)
        {
            ans[i-1]+=ans[i]/10;
            ans[i]=ans[i]%10;
        }
    }
    int i=0,j;
    while(ans[i]==0)
    {
        i++;
    }
    for(j=0;i<alen+blen;j++,i++)
    {
        c[j]=ans[i]+'0';
    }
    c[j]='\0';
    cout<<c<<endl;
}
char a[maxn],b[maxn];
int main()
{
    while(scanf("%s%s",a,b)==2)
    {
        cheng(a,b);
    }
    return 0;
}

你可能感兴趣的:(模板,poj)