#181: 為何會TLE?


bmw530li (bmw530li)

學校 : 國立鳳新高級中學
編號 : 1085
來源 : [140.117.182.47]
最後登入時間 :
2009-11-02 17:30:42
c061. 00530 - Binomial Showdown -- UVa530 | From: [203.73.56.79] | 發表日期 : 2008-02-24 20:45

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
    int n,m,i,j;
    long long int c,total=1;
    while(scanf("%d%d",&n,&m)!=EOF ){
        if(n==0 && m==0) break;
        total=1;
        for(i=(n-m)+1;i<=n;++i){
            total*=i;
        }
        c=total;
        total=1;
        for(j=1;j<=m;j++){
            total*=j;
        }
        c=c/total;

        printf("%lld\n",c);
    }
    return 0;
}

 

 

知道的人可以告訴我嗎?  難道真的是演算法太慢? 

 
#182: Re:為何會TLE?


POOHccc ()

學校 : 國立臺中技術學院
編號 : 1139
來源 : [220.135.97.253]
最後登入時間 :
2012-02-04 21:23:42
c061. 00530 - Binomial Showdown -- UVa530 | From: [220.134.60.246] | 發表日期 : 2008-02-25 09:21

試試輸入1000 997

然後再輸入1000 3

這二組答案是一樣的

 

另外你的方法,好像有可能答案是2^31以內的,可是在運算的途中,你就溢位了  
ZeroJudge Forum