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

第一次发现PE可以是这么郁闷的...

Posted by DancingBlue at 2006-07-20 14:12:00 on Problem 1140
1 578
.0017301038062283737024221453287197231833910034602
07612456747404844290657439446366782006920415224913
49480968858131487889273356401384083044982698961937
71626297577854671280276816608996539792387543252595
15570934256055363321799307958477508650519031141868
512110726643598615916955
The last 272 digits repeat forever.


这样没错吧...


#include<stdio.h>
#define MAX 1001
int list[MAX][2],tail;
inline void initList(){
	int i;
	for(i=0;i<MAX;i++)list[i][0]=-1;
}
inline int in(int k){
	if(list[k][0]!=-1){
		return k;
	}else{
		return -1;
	}
}
inline void add(int k,int i){
	if(list[k][0]!=-1)return;
	list[k][0]=k;
	list[k][1]=i;
}
int remain;
inline void print(int i){
	char bu[999];
	int l,j;
	l=sprintf(bu,"%d",i);
	for(j=0;j<l;j++){
		printf("%c",bu[j]);
		remain--;
		if(!remain){
			printf("\n");
			remain=50;
		}
	}
}
inline void print(char c[]){
	int i;
	for(i=0;c[i];i++){
		printf("%c",c[i]);
		remain--;
		if(!remain){
			printf("\n");
			remain=50;
		}
	}
}
int main(){
	int a,b,i,x;
	while(1){
		scanf("%d%d",&a,&b);
		if(!a && !b)break;
		initList();
		remain=49;
		printf(".");
		if(!a)printf("0");
		x=1;
		i=0;
		while(a){
			if(!x){
				if(in(a)!=-1)break;
			}else{
				x=0;
			}
			add(a,i++);
			a*=10;
			if(a<b){
				print("0");
			}else{
				print(a/b);
				a%=b;
			}
		}
		if(!a){
			printf("\nThis expansion terminates.\n");
		}else{
			printf("\nThe last %d digits repeat forever.\n",i-list[in(a)][1]);
		}
	}
	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