Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
16ms与0ms就是一个语句的差别?#include<iostream> using namespace std; int t[20]; int sum[20]; void init() { int i,j; t[0]=1; t[1]=1; for(i=2;i<=19;i++) { t[i]=0; for(j=0;j<i;j++) t[i]+=t[j]*t[i-1-j]; } sum[1]=1; //sum[0]=0;删了以后0MS,不删16MS for(i=2;i<=19;i++) sum[i]=sum[i-1]+t[i]; } void printout(int x,int num) { if(x==1) {printf("X");return ;} if(x==2) { if(num==1) printf("X(X)"); else printf("(X)X"); return ; } int i,re=0; for(i=0;i<x-1;i++) { if(re+t[i]*t[x-1-i]>=num) break; re+=t[i]*t[x-1-i]; } if(i==0) { printf("X("); printout(x-1-i,num-re); printf(")"); return ; } if(x-i-1==0) { printf("("); printout(i,num-re); printf(")X"); return ; } int t1,t2; t1=(num-re-1)/t[x-1-i]+1; t2=(num-re)%t[x-1-i]; printf("("); printout(i,t1); printf(")X("); printout(x-1-i,t2); printf(")"); } int main() { int n,i; init(); while(scanf("%d",&n)) { if(n==0) break; for(i=1;;i++)if(sum[i]>=n) break; printout(i,n-sum[i-1]); printf("\n"); } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator