組合數
其中n! = 1 × 2 × … × n。
小蔥想知道如果給定n,m和k,對於所有的0 <= i <= n,0 <= j <= min(i,m)有多少對 (i,j)滿足是k的倍數。
第一行有兩個整數t,k,其中t代表該測試點總共有多少組測試資料,k的意義見 【問題描述】。
接下來t行每行兩個整數n,m,其中n,m的意義見【問題描述】。
t行,每行乙個整數代表所有的0 <= i <= n,0 <= j <= min(i,m)有多少對 (i,j)滿足是k的倍數。
輸入樣例#1:
1 2
3 3
輸出樣例#1:
1輸入樣例#2:
2 5
4 5
6 7
輸出樣例#2: 0 7
【樣例1說明】
在所有可能的情況中,只有
考試的時候除了暴力沒有任何思路,所以就直接約分,拿了40分。
#include
#include
using
namespace
std;
int main()
for(int t=(i-j);t>=1;t--)
c=q/w;
if(c%m==0) ans++;}}
cout
0;}
正解:數論——楊輝三角形(然而考試的時候並無思路)
對於每乙個(n,m)
n m c
1 1 1
2 1 2
2 2 1
3 1 3
3 2 3
3 3 1
4 1 4
4 2 6
4 3 4
4 4 1
…… …… ……
再加乙個字首和處理即可ac
#include
#include
int s[2005][2005];
int ans[2005][2005];
using
namespace
std;
int main()
for(int i=1;i<2001;i++)
for(int j=1;j<2001;j++)
s[i][j]=(s[i][j-1]+s[i-1][j-1])%k;//楊輝三角
for(int i=1;i<2001;i++)
ans[i][i]=ans[i-1][i]; //處理邊界
if(s[i][i]=0) ans[i][i]++;
} while(t--)
return
0;}
NOIP2016 提高組Day2 T1 組合數問題
題目描述 組合數表示的是從n個物品中選出m個物品的方案數。舉個例子,從 1,2,3 三個物品中選擇兩個物品可以有 1,2 1,3 2,3 這三種選擇方法。根據組合數的定 義,我們可以給出計算組合數的一般公式 其中n 1 2 n 小蔥想知道如果給定n,m和k,對於所有的0 i n,0 j min i,...
NOIP2016 Day2T1 組合數 90分
題目描述 組合數表示的是從n個物品中選出m個物品的方案數。舉個例子,從 1,2,3 三個物品中選擇兩個物品可以有 1,2 1,3 2,3 這三種選擇方法。根據組合數的定 義,我們可以給出計算組合數的一般公式 其中n 1 2 n 小蔥想知道如果給定n,m和k,對於所有的0 i n,0 j min i,...
組合數問題 NOIP 2016 Day2 T1
題目描述 組合數 表示的是從n個物品中選出m個物品的方案數。舉個例子,從 1,2,3 三個物品中選擇兩個物品可以有 1,2 1,3 2,3 這三種選擇方法。根據組合數的定 義,我們可以給出計算組合數的一般公式 cm n n m n m 其中n 1 2 n 小蔥想知道如果給定n,m和k,對於所有的0 ...