[洛谷]P1517 高精求小数幂

[洛谷]P1517 高精求小数幂

题目描述:

代码:


#include <bits/stdc++.h>
using namespace std;

string s;
int n,ans[11000];

int main(int argc, char const *argv[])
{
	while(cin>>s>>n)
	{
		int a[55],b[11000],ans[11000];
		int xsd=0,len=s.size()-1;
		for(int i=0,pos=s.size()-1;i<s.size();i++,pos--)
		{
			if(s[i]=='.')
			{
				pos++;
				xsd+=s.size()-i-1;
				continue;
			}
			b[pos]=a[pos]=s[i]-'0';
		}
		xsd*=n,n--;
		while(n--)
		{
			memset(ans,0,sizeof(ans));
			for(int i=1;i<=s.size()-1;i++)
				for(int j=1;j<=len;j++)
				{
					int pos=i+j-1,ttt=ans[pos]+(b[j]*a[i]);
					ans[pos]=ttt%10;
					ans[pos+1]+=ttt/10;
				}
			if(ans[len+s.size()-1])
				len+=s.size()-1;
			else
				len+=s.size()-2;
			for(int i=1;i<=len;i++)
				b[i]=ans[i];
		}
		int left=len,right=1;
		while(left>xsd && b[left]==0)
			left--;
		while(right<=xsd && b[right]==0)
			right++;
		for(int i=left;i>=right;i--)
		{
			if(i==xsd )
				cout<<".";
			cout<<b[i];
		}
		cout<<endl;
	}
	return 0;
}


posted @ 2019-10-12 21:29  WJSoj  阅读(283)  评论(0编辑  收藏  举报