1. Question & Analysis
-
Question: 有一个整数,加上100后是一个完全平方数,再加上168又是一个完全平方数,请问这个整数是多少?
-
Analysis: 根据题目一直条件,可以得到一下推导过程:
-
进一步简化得到:
-
此时,假设:
-
由此可得:
-
由(3)知,i&j 至少有一个偶数,已知 m&n 均为整数,再由(4)可知 i&j 均为偶数;且由(3)可知,j只需要取值到sqrt(168)即可;
-
2. Code Modules
#define _CRT_SECURE_NO_WARNINGS 1
#pragma warning(disable:6031)
#include <stdio.h>
#include <math.h>
int main() {
int i = 0;
int j = 0;
int m = 0;
int n = 0;
int x = 0;
for (j = 2; j <= sqrt(168); j += 2) {
if (168 % j == 0) {
i = 168 / j;
m = (i + j) / 2;
n = (i - j) / 2;
if (m * m - n * n == 168) {
x = n * n - 100;
printf("%d\n", x);
}
}
}
return 0;
}
3. Summary
数学与代码不分家,哈哈哈。本题在于简化数学问题,简化之后代码更容易写了。所以呢,要做算法,得把数学学好,加油鸭