⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cpp1.cpp

📁 此代码为北京大学ACM练习网站第1001题源码
💻 CPP
字号:
#include<iostream>
#include<iomanip>
#include<math.h>
using namespace std;
int main()
{
	double A[20];
	double R,r,intR=0,input=0;
	int n;
    int i,j,temp,s;

	while(cin>>R>>n)
	{   cout<<setprecision(15);
		int ks=0;
		double xx=R+0.000000000000001;
		r=R-(int)R+0.00000000000001;
		while(r>0.0000001)
		{
			r=fmod(r,0.1);
			r*=10;
			R*=10;
			ks++;
		}
		A[19]=(int)(R+0.01);
		input=(int)(R+0.01);
		ks*=n;
    	for(i=0;i<19;i++)A[i]=0;
		s=19;
    	for(i=0;i<n-1;i++)
		{
	    	for(j=19;j>=s;j--)
			{
		    	A[j]*=input;
			}
	    	for(s=19;s>j+1;s--)
			{   
		    	temp=A[s]/100000000.0;
		    	A[s]-=temp*100000000.0;
		     	A[s-1]+=temp;
			}
	    	if(A[s]>=100000000.0)
			{
				temp=(int)(A[s]/100000000.0);
	        	A[s]=A[s]-temp*100000000.0;A[s-1]+=temp;
				s-=1;
			}
		}
		i=ks/8;
		j=ks-8*i;
		int kkkk=s;
        if(xx>=1)
		{   
			int counts,st;
			short a[8];
			for(st=0;st<8;st++)a[st]=0;
			if(s==19)
			{   
                int cc=counts=log10(A[19])+1;
                for(st=8-cc;st<8;st++){int x=pow(10,(double)(cc-1));a[st]=A[s]/x;A[s]-=a[st]*x;cc--;}
                for(st=8-counts;st<8-j;st++)cout<<a[st];
				if(j!=0)cout<<".";
				for(;st<8;st++)cout<<a[st];
			}
			else
			{
			    counts=19-i-s;
		    	for(st=0;st<counts;st++)
				{
			    	if(st==0){cout<<A[s++];continue;}
                    int ss=log10(A[s])+1;
			    	for(int t=1;t<8-ss;t++)cout<<0;
			    	cout<<A[s++];
				}
		    	if(A[s]!=0)
				{
			        int tt=log10(A[s])+1;
					int sa=A[s];
                    for(st=8-tt;st<8;st++){int x=pow(10,(double)(tt-1));a[st]=sa/x;sa-=a[st]*x;tt--;}
				}
		    	if(s!=kkkk)
				{
					for(i=0;i<8-j;i++)cout<<a[i];
		        	if(!(s==19&&j==0))cout<<".";
		        	for(;i<8;i++)cout<<a[i];
		        	s++;
				}
				else
				{   
					counts=log10(A[s])+1;
					for(counts=8-counts;counts<8-j;counts++)cout<<a[counts];
					if(!(s==19&&j==0))cout<<".";
					for(;counts<8;counts++)cout<<a[counts];
					s++;
				}
	     		for(;s<20;s++)
				{
		    		counts=log10(A[s])+1;
		    		for(i=0;i<8-counts;i++)cout<<0;
		    		cout<<A[s];
				}
			}
		}
		else
		{
            int counting0=log10(A[s])+1;
			counting0=ks+8*s-152-counting0;
			cout<<".";
			for(i=0;i<counting0;i++)cout<<0;
			cout<<A[s++];
			for(;s<20;s++)
			{
				if(A[s]==0)cout<<"00000000";
				else
				{
					counting0=7.9999-log10(A[s]);
					for(i=0;i<counting0;i++)cout<<0;
					cout<<A[s];
				}
			}

		}
		cout<<endl;
	}
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -