儿童节快乐

作者: qiqi 分类: 基本数论 发布时间: 2025-10-27 20:23

提交链接

题目描述:五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。今天是六一儿童节,小蓝老师为了让大家在节日里享受解题的乐趣,特地准备了一道有趣的题目。题目内容为:求出所有满足以下条件的整数 n 的总和:

  1. (n+10120300500) 是一个完全平方数。
  2. (n−10120300500) 也是一个完全平方数。

一个数如果可以表示为另一个整数的平方,那么这个数就叫做完全平方数。例如,4 可以表示为 2 的平方,9 可以表示为 3 的平方,因此 4 和 9 都是完全平方数。请大家用心仔细地思考,求出答案。同时祝大家儿童节快乐,解题过程开心顺遂!

解题思路:如果直接枚举n,n的没范围,可以无限大。
∵ n+10120300500 是完全平方数。
n−10120300500 是完全平方数。
∴ 设 n+10120300500=a2
n−10120300500=b2

∴a2 −10120300500 = b2 +10120300500。
∴(a+b)(a−b)=20240601000。

设 x=a+b,y=a−b。
∴xy=20240601000。
a=(x+y)/2。
b=(x−y/2。
∵a,b∈Z。
∴x+y≡0(mod2)。

//本题思路
#include <bits/stdc++.h>
using namespace std;
bool check(long long n);
__int128 s;

int main()
{
	long long x, y, ans, a, b;

	long long z = 20240601000 / 2;

	for (y = 2; y <= z / 2; y++) //y小于一半
	{
		if (z % y == 0)
		{
			x = z / y;

			if ( (x + y) % 2 == 1)
				continue;
			if ((x - y) % 2 == 1)
				continue;

			a = (x + y) / 2;
			b = (x - y) / 2;

			if ( check(a) && check(b))
			{
				ans = y;
				break;
			}

		}
	}

	x = z / y;

	z = (x + y) / 2;

	ans = z * z - 10120300500;

	cout << ans << endl;

}

bool check(long long n)
{
	long long t = sqrt(n);
	return t * t == n;
}

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

标签云