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 |
不超过30行 0ms AC ^_^In Reply To:请问怎样不超时 Posted by:SinsongLew at 2007-04-15 14:26:25 //我的是 o(n) 的,计算1500次就可以了.. #include <stdio.h> int main() { int a[1505],an,i,two,three,five,n; a[0]=1; two=three=five=0; for(an=1;an<1500;an++){ if(a[two]*2<=a[three]*3 && a[two]*2<=a[five]*5){ if(a[two]*2==a[three]*3 && a[two]*2==a[five]*5) three++ , five++; else if(a[two]*2==a[three]*3) three++; else if(a[two]*2==a[five]*5) five++; a[an]=a[two++]*2; } else if(a[three]*3<=a[two]*2 && a[three]*3<=a[five]*5){ if(a[three]*3==a[two]*2) two++; else if(a[three]*3==a[five]*5) five++; a[an]=a[three++]*3; } else if(a[five]*5<=a[two]*2 && a[five]*5<=a[three]*3){ if(a[five]*5==a[two]*2) two++; else if(a[five]*5==a[three]*3) three++; a[an]=a[five++]*5; } } while(scanf("%d",&n) && n!=0) printf("%d\n",a[n-1]); } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator