-1

在这里您可以找到我要解决的问题:

对于整数 n 和 k (0<=k<=n<1001) 确定 (二项式系数)。

输入

标准输入的第一行包含一个整数 t (t<1001),它是测试用例的数量。

在接下来的 t 行中的每一行中都有数字 n 和 k。

输出

对于每个测试打印(二项式系数)。

例子:

Input
3
0 0
7 3
1000 2
Output:
1
35
499500

我似乎在我的解决方案中找不到任何问题(除了写得非常糟糕 - 我最近才开始编程):

#include <stdio.h>

int main()
{
    unsigned long int t,n,k,binomial=1;
    unsigned long int number=1;

    for(scanf("%lu",&t);t>0;t--)
    {
        scanf("%lu%lu",&n,&k);
        if(k<(n/2)) k=n-k;
        for(binomial=1,number=1;n>k;k++)
        {
            binomial=binomial*(k+1)/number;
            number++;
        }
        printf("%lu\n",binomial);
    }

    return 0;
}

它适用于示例输入,但解决方案是通过问题站点判断的

(http://www.spoj.pl/SHORTEN/problems/BINOMIAL/english/)

并且该解决方案不被接受。我也尝试了其他输入,所有输入都返回了正确的输出。我的问题是:这个解决方案无效是否有原因?

4

1 回答 1

1

由于 1000C500 大约为 300 位,因此不能以无符号长整数形式存储。简而言之,您需要重新开始并想出更好的技术。

于 2012-12-02T17:24:14.280 回答