Bull Math
Limite de temps: 1000 MS Limite de mémoire: 65536 Ko Format E / S 64 bits:% lld &% llu
Soumettre
Statut
La description
Les taureaux sont tellement meilleurs en mathématiques que les vaches. Ils peuvent multiplier d'énormes nombres entiers ensemble et obtenir des réponses parfaitement précises… du moins c'est ce qu'ils disent. Le fermier John se demande si leurs réponses sont correctes. Aidez-le à vérifier les réponses des taureaux. Lisez deux entiers positifs (pas plus de 40 chiffres chacun) et calculez leur produit. Sortez-le comme un nombre normal (sans zéros non significatifs).
Contribution
- Lignes 1..2: Chaque ligne contient un seul nombre décimal.
Production
- Ligne 1: le produit exact des deux lignes d'entrée
Exemple d'entrée
11111111111111
1111111111
Exemple de sortie
12345679011110987654321
Le plus grand processus de simulation est la multiplication de deux grands nombres. Il faut donc d'abord simuler la multiplication des grands nombres et des entiers, car c'est la multiplication des grands nombres et des entiers, il faut donc d'abord simuler l'addition de grands nombres.
#include "iostream"
#include "cstdio"
#include "cstring"
#include "algorithm"
using namespace std;
const int maxn = 1e2+5;
string str1,str2;
string sum(string s1,string s2) //大数加法
{
if(s1.length()<s2.length())
{
string temp=s1;
s1=s2;
s2=temp;
}
int i,j;
for(i=s1.length()-1,j=s2.length()-1;i>=0;i--,j--)
{
s1[i]=char(s1[i]+(j>=0?s2[j]-'0':0));
if(s1[i]-'0'>=10)
{
s1[i]=char((s1[i]-'0')%10+'0');
if(i) s1[i-1]++;
else s1='1'+s1;
}
}
return s1;
}
string Mult(string s,int x) //大数乘以整形数
{
reverse(s.begin(),s.end());
int cmp=0;
for(int i=0;i<s.size();i++)
{
cmp=(s[i]-'0')*x+cmp;
s[i]=(cmp%10+'0');
cmp/=10;
}
while(cmp)
{
s+=(cmp%10+'0');
cmp/=10;
}
reverse(s.begin(),s.end());
return s;
}
string Multfa(string x,string y) //大数乘法
{
string ans;
for(int i=y.size()-1,j=0;i>=0;i--,j++)
{
string tmp=Mult(x,y[i]-'0');
for(int k=0;k<j;k++)
tmp+='0';
ans=sum(ans,tmp);
}
return ans;
}
int main(){
cin>>str1;
cin>>str2;
string gao = Multfa(str1,str2);
cout<<gao<<endl;
return 0;
}