高精度乘法0分求改
查看原帖
高精度乘法0分求改
759152
yinbe楼主2023/10/18 22:11
#include<iostream>
#include<string>
#include<cstring>
#include<algorithm>
using namespace std;
int a,n;
string ans="1";
string a1;
string cheng(string a1,string b1)
{
	int lena=a1.size();
	int lenb=b1.size();
	int a[150],b[150],c[150];
	for(int i=0;i<lena;i++)
	{
		a[lena-i]=a1[i]-'0';
	}
	for(int i=0;i<lenb;i++)
	{
		b[lenb-i]=b1[i]-'0';
	}
	int lenc=lena+lenb;
	for(int i=1;i<=lena;i++)
	{
		int x=0;
		for(int j=1;j<=lenb;j++)
		{
			c[i+j-1]+=a[i]*b[j]+x;
			x=c[i+j-1]/10;
			c[i+j-1]%=10;
		}
		c[i+lenb]=x;
	}
	while(c[lenc]==0&&lenc>1)
	{
		lenc--;
	}
	string ans;
	for(int i=lenc-1;i>=0;i--)
	{
		ans+=c[i]+'0';
	}
	return ans;
}
int main()
{
	scanf("%d%d",&a,&n);
	a1=to_string(a);
	while(n--)
	{
		ans=cheng(ans,a1);
	}
	int cnt1=0,cnt2=0;
	for(int i=0;i<ans.size();i++)
	{
		if((ans[i]-'0')&1)
		{
			cnt1++;
		}
		else
		{
			cnt2++;
		}
	}
	printf("%d",cnt1-cnt2);
	return 0;
}
2023/10/18 22:11
加载中...