首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【杭电oj】1334 - Perfect Cubes(水)

【杭电oj】1334 - Perfect Cubes(水)

作者头像
FishWang
发布2025-08-26 17:53:18
发布2025-08-26 17:53:18
11300
代码可运行
举报
运行总次数:0
代码可运行

Perfect Cubes

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 2767 Accepted Submission(s): 1250 Problem Description

For hundreds of years Fermat's Last Theorem, which stated simply that for n > 2 there exist no integers a, b, c > 1 such that a^n = b^n + c^n, has remained elusively unproven. (A recent proof is believed to be correct, though it is still undergoing scrutiny.) It is possible, however, to find integers greater than 1 that satisfy the ``perfect cube'' equation a^3 = b^3 + c^3 + d^3 (e.g. a quick calculation will show that the equation 12^3 = 6^3 + 8^3 + 10^3 is indeed true). This problem requires that you write a program to find all sets of numbers {a, b, c, d} which satisfy this equation for a <= 200.

Output

The output should be listed as shown below, one perfect cube per line, in non-decreasing order of a (i.e. the lines should be sorted by their a values). The values of b, c, and d should also be listed in non-decreasing order on the line itself. There do exist several values of a which can be produced from multiple distinct sets of b, c, and d triples. In these cases, the triples with the smaller b values should be listed first. The first part of the output is shown here: Cube = 6, Triple = (3,4,5) Cube = 12, Triple = (6,8,10) Cube = 18, Triple = (2,12,16) Cube = 18, Triple = (9,12,15) Cube = 19, Triple = (3,10,18) Cube = 20, Triple = (7,14,17) Cube = 24, Triple = (12,16,20) Note: The programmer will need to be concerned with an efficient implementation. The official time limit for this problem is 2 minutes, and it is indeed possible to write a solution to this problem which executes in under 2 minutes on a 33 MHz 80386 machine. Due to the distributed nature of the contest in this region, judges have been instructed to make the official time limit at their site the greater of 2 minutes or twice the time taken by the judge's solution on the machine being used to judge this problem.

Source

Mid-Central USA 1995

我还以为这样会超时呢,以为有什么数学公式(被学长出的数学题吓怕了)。

用几层for循环直接滚过去就行了,好水的题。

代码如下:

代码语言:javascript
代码运行次数:0
运行
复制
#include <cstdio>
#include <cstring>
int main()
{
	int n = 200;
//	scanf ("%d",&n);
	for (int a=1 ; a<=n ; a++)
	{
		int t = a*a*a;
		for (int b=2 ; b<=n ; b++)
		{
			int t1 = b*b*b;
			if (b >= a)
				break;
			for (int c=b+1 ; c<=n ; c++)
			{
				int t2 = c*c*c;
				if (t1 + t2 >= t)
					break;
				for (int d=c+1 ; d<=n ; d++)
				{
					if (t1 + t2 + d*d*d > t)
						break;
					else if (t1 + t2 + d*d*d == t)
						printf ("Cube = %d, Triple = (%d,%d,%d)\n",a,b,c,d);
				}
			}
		}
	}
	return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-08-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Perfect Cubes
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档