记录编号 |
85495 |
评测结果 |
AAAAAATTTT |
题目名称 |
超强的乘法问题 |
最终得分 |
60 |
用户昵称 |
超级傲娇的AC酱 |
是否通过 |
未通过 |
代码语言 |
C++ |
运行时间 |
4.202 s |
提交时间 |
2014-01-06 00:39:14 |
内存使用 |
14.81 MiB |
显示代码纯文本
//
// main.cpp
// mul
// 高精度万进制。
// Created by apple on 14-1-6.
// Copyright (c) 2014年 apple . All rights reserved.
//
#include<iostream>
#include<cstring>
#include<vector>
#include<cstdio>
#include<cstdlib>
#define Len 100000+10
using namespace std;
void numT(int s[],string st1);
int a[Len]={0},b[Len]={0},c[Len]={0};
string str1,str2;
int main()
{
freopen("bettermul.in","r",stdin);
freopen("bettermul.out","w",stdout);
ios::sync_with_stdio(false);
int len;
cin>>str1>>str2;
numT(a,str1);
numT(b,str2);
for(int i=1;i<=a[0];i++)
for(int j=1;j<=b[0];j++){
c[i+j-1]+=a[i]*b[j];
c[i+j]+=c[i+j-1]/10000;
c[i+j-1]%=10000;
}
len=a[0]+b[0];
while ((c[len]==0)&&(len>1)) len--;
cout<<c[len];
for(int i=len-1;i>=1;i--){
if (c[i]<1000)cout<<'0';
if (c[i]<100)cout<<'0';
if (c[i]<10)cout<<'0';
cout<<c[i];
}
cout<<endl;
return 0;
}
void numT(int s[],string st1)
{ int k=1,count=1;
s[0]=st1.length();
for(int i=s[0]-1;i>=0;i--){
if(count%4==0){
s[k]+=(st1[i]-'0')*1000;
if(i!=0)k++;
}
if(count%4==1)s[k]=(st1[i]-'0');
if(count%4==2)s[k]+=(st1[i]-'0')*10;
if(count%4==3)s[k]+=(st1[i]-'0')*100;
count++;
}
s[0]=k;
}