记录编号 560953 评测结果 AAAAAAAA
题目名称 等差数列 最终得分 100
用户昵称 GravatarFoolMike 是否通过 通过
代码语言 C++ 运行时间 1.180 s
提交时间 2021-05-26 14:27:40 内存使用 1.38 MiB
显示代码纯文本
#include <cstdio>

const int N = 200010;
int n, m, sum[N], MAX, q[N], size;
bool valid[N];

int main()
{
	freopen("ariprog.in", "r", stdin);
	freopen("ariprog.out", "w", stdout);
	scanf("%d%d", &n, &m);
	MAX = m * m * 2;
	for (int i = 0; i <= m; ++i)
		for (int j = 0; j <= m; ++j)
			valid[i * i + j * j] = 1;
	for (int i = 0; i <= MAX; ++i)	
		if (valid[i]) q[++size] = i;
	bool flag = 1;
	for (int b = 1; b <= MAX / (n - 1); ++b)
	{
		for (int a = 1; a <= size; ++a)
		{
			sum[q[a]] = (q[a] >= b && valid[q[a] - b] ? sum[q[a] - b] + 1 : 1);
			if (sum[q[a]] >= n) printf("%d %d\n", q[a] - (n - 1) * b, b), flag = 0;
		}
	}
	if (flag) printf("NONE\n");
	return 0;
}