求调!!
查看原帖
求调!!
1408054
zhaolt2012楼主2025/2/8 16:39
#include<bits/stdc++.h>
using namespace std;
string s;
int w,zw,n,m,k,g;
int MAXN=10000000;
void pre(string s,int a[])
{
	bool q=0;
	for(int i=m;i>0;i--)
	{
		if(s[i-1]=='.')
		{
			q=1;
			m--;
		}
		else
		{
			a[m-i+1]=s[i-1]-'0';
			if(q==0)w++;
		}
	}
	a[0]=w*n;
}
void cheng(int a[],int mm,int n)
{
	int c[MAXN]={0},b[MAXN]={0};
	for(int i=1;i<=m+mm;i++)b[i]=a[i];
	while(n)
	{
		int q=0,l;
		for(int i=1;i<=m;i++)
		{
			q=0;
			for(int j=1;j<=mm+1;j++)
			{
				l=c[i+j-1];
				c[i+j-1]=(a[i]*b[j]+q+c[i+j-1])%10;
				q=(a[i]*b[j]+q+l)/10;
			}
		}
		if(n==2)
		{
			for(int i=1;i<=m+mm;i++)
			{
				if(c[i]==0)g++;
				else break;
			}
			bool k=0;
			for(int i=m+mm;i>0;i--)
			{
				if(i==g)break;
				if(i==a[0])
				{
					k=1;
					cout<<".";
				}
				if(c[i]==0)
				{
					if(k==0)continue;
				}
				else k=1;
				cout<<c[i];
			}
			cout<<"\n";
			return;
		}
		for(int i=1;i<=m+mm;i++)
		{
			b[i]=c[i];
			c[i]=0;
		}
		mm+=m;
		n--;
	}
}
int main()
{
	while(cin>>s>>n)
	{
		g=0;
		w=0;
		int a[MAXN]={0};
		m=s.size();
		pre(s,a);
		cheng(a,m,n);
	}
	return 0;
}

WA5

2025/2/8 16:39
加载中...