又绿又黑求助
查看原帖
又绿又黑求助
1328844
72728abcd楼主2024/10/20 16:35

程序

#include<bits/stdc++.h>
using namespace std;
int a,i=0;
unsigned long long sum=1;
long double sum2=1;
char b[50001];
int main()
{
	cin>>a;
	if(a<201)
	{
		if(a==0)
		{
			cout<<0<<endl<<0;return 0;
		}
		if(a==1)
		{
			cout<<1<<endl<<1;return 0;
		}
		while(a>4)
		{
			sum*=3;
			sum2*=3;
			a-=3;
		}
		if(a==4)
		{
			sum*=4;
			sum2*=4;
		}
		if(a==3)
		{
			sum*=3;
			sum2*=3;
		}
		if(a==2)
		{
			sum*=2;
			sum2*=2;
		}
		for(i;sum2>=pow(10,i);i++)
		{
		}
		cout<<i<<endl;
		cout<<sum;
		return 0;
	}
	else
	{
		for(int j=0;j<50001;j++)
		{
			b[j]='0';
		}
		b[0]='1';
		while(a>4)
		{
			for(int j=0;j<50001;j++)
			{
				b[i]-='0';
				b[i]*=3;
				b[i]+='0';
				while(b[i]>'9')
				{
					b[i]-=10;
					b[i+1]+=1;
				}
			}
		}
		if(a==4)
		{
			for(int j=0;j<50001;j++)
			{
				b[i]-='0';
				b[i]*=4;
				b[i]+='0';
				while(b[i]>'9')
				{
					b[i]-=10;
					b[i+1]+=1;
				}
			}
		}
		if(a==3)
		{
			for(int j=0;j<50001;j++)
			{
				b[i]-='0';
				b[i]*=3;
				b[i]+='0';
				while(b[i]>'9')
				{
					b[i]-=10;
					b[i+1]+=1;
				}
			}
		}
		if(a==2)
		{
			for(int j=0;j<50001;j++)
			{
				b[i]-='0';
				b[i]*=2;
				b[i]+='0';
				while(b[i]>'9')
				{
					b[i]-=10;
					b[i+1]+=1;
				}
			}
		}
		for(int j=50000;j>-1;j--)
		{
			if(b[j]!=0)
			{
				cout<<j<<endl;
				for(int k=0,l=j;k<100;k++,l--)
				{
					cout<<b[l];
				}
			}
		}
		return 0;
	}
}
2024/10/20 16:35
加载中...