1.题目描述:

小米OJ——数学等式

2.分析:

这道题目必然会卡你5重循环暴力以及你在怎么优化也会吃T,这道题目其实我也不知道正解是什么,我使用C++ 的STL的map来算的,我们先把右边等式的值算出来作为关键字存储,然后在将该关键字++,最后我们算出左边的值用三重循环遍历出来大概时间复杂度为O(100 * 100 * 100) = O(1e6),时间上不会爆,那么内存可能勉强也不会爆。然后我们在map中查找元素,时间复杂度为O(logn)。
这样就可以过了.

3.代码:

/*
-14 -42 -23 27 -48

3022
*/

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

map<int, int> m;

int main() {
	int a, b, c, d, e;
	scanf("%d%d%d%d%d", &a, &b, &c, &d, &e);
	for (int i = -50; i <= 50; i++) {
		if (i == 0) continue;
		for (int j = -50; j <= 50; j++) {
			if (j == 0) continue;
			int x = d * i * i * i + e * j * j * j;
			m.insert(make_pair(x, m[x]++));
		}
	}
	int ans = 0;
	for (int i = -50; i <= 50; i++) {
		if(i == 0) continue;
		for (int j = -50; j <= 50; j++) {
			if (j == 0) continue;
			for (int k = -50; k <= 50; k++) {
				if (k == 0) continue;
				int x = a * i * i * i + b * j * j * j + c * k * k * k;
				if (m.count(x)) {
					ans += m[x];
				}
			}
		}
	}
	printf("%d\n", ans);
	return 0;
}

相关文章:

  • 2021-12-16
  • 2021-11-20
  • 2021-04-06
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-11-02
  • 2021-11-20
  • 2022-01-09
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案