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 |
这个题目 如果都算出来的话,精确统计可是超时了阿代码如下 应该怎么做阿,#include<iostream> using namespace std; #define MAX_DIG 60000 /* Max digit is 60000 x 2 = 120,000 :) */ void main() { unsigned char N[MAX_DIG]; register unsigned int i, j; long int pN, last0 = 0; register unsigned int sum = 0; int times,n; digits[0]=1; cin>>times; while(times--) { cin>>n; N[0]=1; last0=0; pN=0; for (j=2; j<=n; j++) { sum = 0; for (i=last0; i<=pN; i++) { sum = sum + N[i] * j; N[i] = sum % 100; sum = sum / 100; } while (sum>0) { pN++; N[pN] = sum % 100; sum = sum / 100; } while ((N[last0] == 0) && (last0<pN)) last0++; } if(N[pN]<10) cout<<pN*2+1<<endl; else cout<<pN*2+2<<endl; } } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator