Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

为什么不过呢?

Posted by o87481299 at 2011-07-05 10:02:58 on Problem 1001
#include <stdio.h>
#include <iostream>
using namespace std;
int  f(int *a,int n,int mm){
	int c=0,m=0; 
	int sum=1;
	a[0]=1;
	for (int i = 0;i<mm;++i){
		c=0;
		for (int j=0;j<=m;++j){
			a[j]=a[j]*n+c;
			c=a[j]/10000;
			a[j]%=10000;
		}
		
		if (c>0){
			while(c>=10000){
				a[++m]=c%10000;
				c=c/10000;
			}
			if(c>0) a[++m]=c;
		}
	}

	return m;
}
int main()
{
	char str[10];
	int power;
	int number=0;
	int ans[100];
	int start,end,reN;

	while(scanf("%s%d",str,&power)==2){
		
	//printf("%s %d\n",str,power);
	
	
	//for(int i=0;i<10;++i) printf("%d\t",str[i]);
	
		number=0;
		int ii,ispoint=0;
		for( ii=0;str[ii]!=0;++ii){
			if(str[ii]=='.'){ ispoint=ii;continue;}
			number=number*10+(str[ii]-'0');
		}
		
	//printf("number is %d\n",number);
	//system("pause");
	
		start=f(ans,number,power);
	//printf("start  is %d\n",start);
	//system("pause");
	

		if(ans[start]/10==0)		reN=start*4+1;
		else if(ans[start]/100==0)	reN=start*4+2;
		else if(ans[start]/1000==0)	 reN=start*4+3;
		else if(ans[start]/10000==0)	reN=start*4+4;
	//printf("ren is %d\n",reN);
	
		for(int i=0;1;++i){
			if(ans[i]!=0){ 
				end=i;
				break;
			}
		}
	//printf("end  is %d\n",end);
	//system("pause");

		int *Ans=new int[(start-end+1)*4+100];
		int len=-1;
	
		for(int i=start;i>=end;--i){
			Ans[++len]=ans[i]/1000;
			Ans[++len]=(ans[i]/100)%10;
			Ans[++len]=(ans[i]/10)%10;
			Ans[++len]=ans[i]%10;
		}

		for(int i=0;1;++i){
			if(Ans[i]!=0){
				start=i;
				break;
			}
		}
		for(int i=len;1;--i){
			if(Ans[i]!=0){
				end=i;
				break;
			}
		}
		
		if(ispoint!=0){
			bool flag=0;
			for(int i=ispoint+1;i<ii;++i){
				if(str[i]!='0'){ 
					flag=1;
					break;
				}
			}
			if(flag) ispoint=1;
			else{ispoint=0;}
		}
		
	
		if(ispoint==0)
		{	
		//printf("<<<<");
				for(int i=start;i<=end;++i){printf("%d",Ans[i]);}
		}
		else{	
			if(str[0]=='0'){
				reN=(ii-2)*power-reN;
			//printf("renn is %d\n",reN);
				printf(".");
				for(int i=0;i<reN;++i) printf("0");
				for(int i=start;i<=end;++i){printf("%d",Ans[i]);}		
			}
			else{
			//printf(">>>>>\n");
				if(str[1]=='.'){reN=reN-(ii-2)*power;}
				else{reN=reN-(ii-3)*power;}
			//printf("renn is %d\n",reN);
				for(int i=start;i<start+reN;++i){printf("%d",Ans[i]);}
				printf(".");
				for(int i=start+reN;i<=end;++i){printf("%d",Ans[i]);}	
			}
		}
		printf("\n");
		delete []Ans;
	}
	
	
	//system("pause");
	return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator