求求了,高精乘调半天还不对,悬关
查看原帖
求求了,高精乘调半天还不对,悬关
702822
Colas_miao_楼主2023/6/5 21:14
#include<bits/stdc++.h>
#define int long long
#define FOR(i,l,r) for(int i=(l);i<=(r);++i)
#define _FOR(i,l,r) for(int i=(l);i>=(r);--i)
using namespace std;
int a[10000];
string addd(string s1,string s2)
{
	int a1=s1.size(),a2=s2.size();
	FOR(i,0,a1)
		FOR(j,0,a2)
			a[a1-i+a2-j-1]+=(s1[i]-'0')*(s2[j]-'0');
	for (int i=1;i<=a1+a2;i++) { a[i+1]+=a[i]/10; a[i]%=10; }
	a[0]=a1+a2; while (a[a[0]]==0&&a[0]>1) a[0]--;
	FOR(i,1,a[0]) s1[i-1]=a[i]+'0';
	return s1;
}
signed main()
{
	string s1="1";
    string s2="2";
    memset(a,0,sizeof(a));
    int n;
    cin>>n;
    FOR(i,1,n)
    {
    	s1=addd(s1,s2);
	}
	if(a[a[0]]==0)
	{
		a[a[0]-1]--;
		a[a[0]]=9;
	}
	a[a[0]]--;
	cout<<a[0]<<'\n';
    for (int i=500;i>=1;i--)
	{
		if(i%10==0) puts("");
		cout<<a[i];
	}
    cout<<endl;
	return 0;
}
2023/6/5 21:14
加载中...