关于#define int long long
  • 板块学术版
  • 楼主封禁用户
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/10/22 18:08
  • 上次更新2024/10/22 18:20:36
查看原帖
关于#define int long long
608410
封禁用户楼主2024/10/22 18:08

为什么这份代码加入#define int long long就会死循环(总之就是卡住?

#include<bits/stdc++.h>
//#define int long long
using namespace std;

const int maxn = 2e3 + 5;

inline int read() {
	int ret = 0, f = 1;char ch = getchar();
	while (ch < '0' || ch > '9') {
		if (ch == '-') f = -f;
		ch = getchar();
	}
	while (ch >= '0' && ch <= '9') {
		ret = (ret << 1) + (ret << 3) + (ch ^ 48);
		ch = getchar();
	}
	return ret * f;
}

int T, k, n, m;

int c[maxn][maxn], ans[maxn][maxn];
void init() {
	c[1][1] = 1;
	for (int i = 2;i <= maxn;i++) {
		for (int j = 1;j <= i;j++) {
			c[i][j] = (c[i - 1][j] + c[i - 1][j - 1]) % k;
		}
	}
	for (int i = 2;i <= maxn;i++) {
		for (int j = 1;j <= i;j++) {
			if (c[i][j] == 0) ans[i][j]++;
			ans[i][j] += ans[i - 1][j - 1] + ans[i - 1][j] + ans[i][j -1];
		}
	}
}

signed main() {
	T = read(), k = read();
	
	init();
 
	while (T--) {
		n = read(), m = read();
		printf("%d\n", ans[n][m > n ? n : m]);
	}
	return 0;
}
2024/10/22 18:08
加载中...