Kobe_Bryan @ 2024-04-16 16:57:38
最后两个
/*
1.将高精度的s1,逆序存入整数数组a
2.将a数组的每一位,逐位和整数b相乘,结果存入a数组
3.逐位进位
4.逆序输出
*/
#include<bits/stdc++.h>
using namespace std;
string s1;
long long a[100000000],b,p=0,t=0;
int main()
{
cin>>s1>>b;
for(long long i=0;i<s1.size();i++)
{
a[i]=s1[s1.size()-1-i]-'0';
}
for(long long i=0;i<s1.size();i++)
{
a[i]=a[i]*b;
}
for(long long i=0;i<s1.size()+9999999;i++)
{
if(a[i]>=10)
{
a[i+1]=a[i+1]+a[i]/10;
a[i]=a[i]%10;
}
}
for(long long i=0;i<s1.size()+9999999;i++)
{
if(a[i]!=0)
{
p=i;
}
}
for(long long i=p;i>=0;i--)
{
cout<<a[i];
}
return 0;
}
by hkdzyhk @ 2024-04-27 21:46:51
@Kobe_Bryan 代码如下:
#include<bits/stdc++.h>
using namespace std;
char a1[2005],b1[2005];
long long a[2005]={0},b[2005]={0},lena,lenb,c[200000005]={0},lenc;
void read(){
cin>>a1>>b1;
lena=strlen(a1);
lenb=strlen(b1);
for(int i=lena;i>0;i--)a[i]=a1[lena-i]-'0';
for(int i=lenb;i>0;i--) b[i]=b1[lenb-i]-'0';
}
void print(){
for(int i=lenc;i>=1;i--) cout<<c[i];
}
void mul(){
lenc=lena+lenb;
for(int i=1;i<=lena;i++){
for(int j=1;j<=lenb;j++){
c[i+j-1]+=a[i]*b[j];
c[i+j]+=c[i+j-1]/10;
c[i+j-1]%=10;
}
}
while(c[lenc]==0 && lenc>1) lenc--;
}
int main(){
read();
mul();
print();
}