*^-^* 每日一题: 枚举法解三元二次方程 *^-^*

1. Question & Analysis

  • Question: 有一个整数,加上100后是一个完全平方数,再加上168又是一个完全平方数,请问这个整数是多少?

  • Analysis: 根据题目一直条件,可以得到一下推导过程:

    math

    • 进一步简化得到:
      

    math

    • 此时,假设:
      

      math

    • 由此可得:
      

      math

    • 由(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

数学与代码不分家,哈哈哈。本题在于简化数学问题,简化之后代码更容易写了。所以呢,要做算法,得把数学学好,加油鸭 smile

123 views
Comments
登录后评论
Sign In
·

熬夜到这么晚 open_mouth

·

我数学不太好,四则运算就够我晕一会儿了,不过现在学JavaScript也不会用到太多