看到这题第一眼,无脑码了一个某辉三角计算,因为每次都给定 n 和 m ,就可以从杨辉三角直接枚举出相应部分滴元素(暴力),然后以此判断是否是 0 ,是就说明是 k 滴倍数。
码了一个这个玩意:
#include<bits/stdc++.h>
using namespace std;
long long C[2005][2005];
int main() {
int t, k, m ,n;
cin>>t>>k;
for(int i=0; i<=2000; i++) {
C[i][0]=C[i][i]=1;
for(int j=1; j<i; j++)
C[i][j]=(C[i-1][j]+C[i-1][j-1]) % k;
}
while(t--) {
int ans=0;
cin>>n>>m;
for(int i=0; i<=n; i++) {
for(int j=0; j<=min(i,m); j++)
ans+=C[i][j]==0;
}
cout<<ans<<endl;
}
return 0;
}
90分,祭了。 然后不想改代码,抱着一点希望吸了个氧。95,还是祭了。
这题数据怎么这么惊人啊,本来快乐水题的心情都没有了QAQ
后来想想可以用二维前缀和优化一下,应该是可以满分的。
请问这题除了某辉三角+优化还有没有其他更好点的解法,看过了一些题解,好玄学啊 能直接AC不用优化的那种。(如果显然没有/有wssb,但是请告诉我谢谢)