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 frkstyc at 2005-10-23 23:43:26 on Problem 2680
In Reply To:Why Time Limit Exceed?(C++) Posted by:shiming413 at 2005-10-23 23:42:28
> 代码如下:
> #include <stdio.h>
> int a[1000]={1,0};
> int main()
> {
> 	int n,i,j,c;
> 	while(scanf("%d",&n)!=EOF)
> 	{
> 		a[0]=1;
> 		for(i=1;i<1000;i++)
> 			a[i]=0;
> 		if(n==1)
> 		{
> 		    printf("0\n");
> 			continue;
> 		}
> 		if(n==2||n==3)
> 		{
> 		    printf("1\n");
> 			continue;
> 		}
> 		for(i=0;i<n-3;i++)
> 		{
> 		    c=0;j=0;
> 		    do
> 			{
> 				c+=2*a[j];
> 				a[j]=c%10;
> 				c/=10;
> 				j++;
> 			}while(c!=0||j<n);
> 			if(i%2==0)
> 			{
> 				c=1;j=0;
> 				do
> 				{
> 					c+=a[j];
> 					a[j]=c%10;
> 					c/=10;
> 					j++;
> 				}while(c!=0);
> 			}
> 			else
> 			{
> 				c=-1;j=0;
> 				do
> 				{
> 					c+=a[j];
> 					a[j]=c%10;
> 					c/=10;
> 					j++;
> 				}while(c!=0);
> 			}
> 		}
>     	if(i%2==2)
> 		{
> 		    c=1;j=0;
> 	    	do
> 			{
> 		    	c+=a[j];
> 		    	a[j]=c%10;
> 		    	c/=10;
> 		    	j++;
> 			}while(c!=0);
> 		}
> 		i=999;
> 		while(a[i]==0)
> 			i--;
> 		for(;i>=0;i--)
> 			printf("%d",a[i]);
> 		putchar('\n');
> 	}
> 	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