我想知道为什么要取模,取模出来的答案不应该是错误的吗,为什么我取了模就AC了,不取模我的代码99 100永远输出0.我不是很理解b如果取了模100003就AC了,不取就错误了。
#include <stdio.h>
#include <stdlib.h>
#include<cstring>
void taijie(long long* a, int N, int K) {
for (int i = 2; i <= N; i++) {
if (i<K) {
long long b = 0;
for (int j = 0; j < i; j++) {
b = (a[j] + b);
}
a[i] = b;
}
else {
long long b = 0;
for (int j = i - K; j < i; j++) {
b = (a[j] + b);
}
a[i] = b;
}
}
}
int main() {
int N;
int K;
scanf_s("%d%d", &N, &K);
long long* a = (long long*)malloc((N + 1) * sizeof(long long)); //注意需要申请N+1个int类型空间
//memset(a, 0, N*sizeof(a));
a[0]=a[1] = 1;
if (K == 1) {
printf("1");
}
else {
if (K > N) {
taijie(a, N, N);
printf("%lld", a[N]);
}
else {
taijie(a, N, K);
printf("%lld", a[N]);
}
}
free(a);
return 0;
}