ここで、私が解決しようとしている問題を見つけることができます:
整数 n および k (0<=k<=n<1001) に対して (二項係数) を決定します。
入力
標準入力の最初の行には、テスト ケースの数である 1 つの整数 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/)
そして解決策は受け入れられません。他の入力も試してみましたが、すべて正しい出力が返されました。私の質問は次のとおりです。このソリューションが無効である理由はありますか?