小蔥想知道如果給定 n,m 和 k,對於所有的 0≤i≤n,0≤j≤min(i,m) 有多少對 (i,j)(i,j) 滿足 ci取j 是 k 的倍數。
輸入格式:
第一行有兩個整數 t,kt,k,其中 tt 代表該測試點總共有多少組測試資料,k 的意義見問題描述。
接下來 tt 行每行兩個整數 n,m,其中 n,m 的意義見問題描述。
輸出格式:
共 t行,每行乙個整數代表所有的0≤i≤n,0≤j≤min(i,m) 中有多少對 (i,j)(i,j) 滿足ci取j是 k 的倍數。
輸入樣例#1:
1 2
3 3
輸出樣例#1:1
輸入樣例#2:2 5
4 56 7
輸出樣例#2:0
7
dp[n][m]即為所求答案的意思,則有公式:
dp[i][j]=dp[i-1][j]+f[i][j] f[i][j]=c(i,k)% k==0的個數,0<=k<=j
又有f[i][j]=f[i][j-1]+(c(i,j)%k ==0 ),
c[i][j]=(c[i-1][j-1]+c[i]-1[j])%k , 因為a=b+c, a%k=(b%k+c%k)%k
一題三個dp。。。。
#include
using
namespace std;
char buf[
1<<17]
,*l=buf,
*r=buf;
inline
chargc(
)template
<
typename t>
inline
void
read
(t&x)
const
int maxn=
2e3+3;
int dp[maxn]
[maxn]
,f[maxn]
[maxn]
,c[maxn]
[maxn]
;int t,k;
intmain()
} f[0]
[0]=
(c[0][
0]==0
);for(
int i=
1; i++i)
} dp[0]
[0]=f[0]
[0];
for(
int i=
1; i++i)
}int x,y;
while
(t--
)return0;
}
P2822 組合數問題
題目描述 組合數c n mc n m 表示的是從n個物品中選出m個物品的方案數。舉個例子,從 1,2,3 三個物品中選擇兩個物品可以有 1,2 1,3 2,3 這三種選擇方法。根據組合數的定 義,我們可以給出計算組合數的一般公式 c n m m n m n 其中n 1 2 n 不清楚不要怪我,暫時找...
P2822組合數問題
題目鏈結 眾所周知,小蔥同學擅長計算,尤其擅長計算組合數。而且這道題與組合數有關係。乍一看什麼思路沒有,硬想柿子想了半小時。不知道結論,wtcl。後來打表發現規律,發現是個非常水的規律題,然後5min寫完 3min調 交上去ac了。題外話 自己寫的快讀掛了。模 k 下的楊輝三角,值為 0 的位置權值...
P2822 組合數問題
組合數 表示的是從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,m 有多...