POJ 2810完美立方

POJ 2810完美立方

在这里插入图片描述

输入样例

24

输出样例

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)
  • 思路1:
    直接枚举,设置4个 变量a, b, c, d,让b, c, d 从[2, a)不断取不同组合,逐一验证是否满足公式

  • 优化思路1:
    1)由b <= c <= d可以设置b的循环范围为[2, c),c为[b, d),d为[c, a) --> 循环变量由外到内依次为:a, b, c, d(使)a成为b,c,d,b成为c…的约束条件
    2)立方计算会有大量重复,预先开一个数组存好从2到N的立方数
    3)细节:a可以从6开始

  • code1:

#include <cstdio>
int CubeNum[200];

int main(){
	int n;
	scanf("%d", &n);
	for(int i = 2; i <= n; ++i){
		CubeNum[i] = i * i * i;
	}
	int c = 2, d = 2;
	for(int a = 6; a <= n; ++a){
		for(int b = 2; b <= c; ++b){
			for(c = b; c <= d; ++c){
				for(d = c; d <= a; ++d){
					if(CubeNum[a] == CubeNum[b] + CubeNum[c] +CubeNum[d])
						printf("Cube = %d, Triple = (%d,%d,%d)\n", a, b, c, d);	
				}
			}
		}
	} 
		
	return 0;
}
  • WA1:计算立方数组的for_loop里,i 没有取到 n, a 一直循环到 n,所以需要CubeNum[n]n^3
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值