计算思维训练--魔法数

魔法数

成绩: 5 / 折扣: 0.8

大贤者福尔最近迷上了数学,他研究发现有些神奇的数似乎具有某种魔力。于是他开始研究自然数,发现某个范围内的一些数,经过一定规则运算后的和,等于另一个数按同样规则计算后的值。具体来说,给定不大于NN的整数a, b, c, d (1 \le a \le b \le c \le d \le N)a,b,c,d(1≤a≤b≤c≤d≤N),可能存在关系a^x+b^x+c^x=d^xax+bx+cx=dx。

福尔想知道在给定的范围NN中,有多少数能够满足这种关系?

输入

输入数据有若干行,每行包括两个整数x, N,(2 \le x \le 3, 1 \le N \le 100x,N,(2≤x≤3,1≤N≤100。

输出

对每组测试数据,先输出样例编号Case c:c为当前测试样例的组号,从1开始。随后按照a, b, ca,b,c的自然序依次输出结果。若不存在满足条件的数,则输出No such numbers.

示例输入

3 4
3 6

示例输出

Case 1: No such numbers.
Case 2: 3^3+4^3+5^3=6^3

数据不是很大,n=100;所以可以直接用枚举的办法解决这道题;

因为a,b,c,d之间是有数量关系的,所以:

用三层循环就可以解决问题;博主试了一下四层,也是可以通过的,实在不行就改成三层循环;

#include <iostream>
using namespace std;
int main() {
	int x,n,flag = 1,cnt=1;
	while (cin >> x >> n) {
		flag = 1;  //判断数据内由无符合条件的标记;
		printf("Case %d:\n",cnt);
		for (int i=1;i<=n;i++)
			for(int j=i;j<=n;j++)
				for(int k=j;k<=n;k++)
					for (int m = k ; m <=n; m++) {
                        //x=2的情况
						if (i * i + j * j + k * k == m * m &&x==2) {
							printf("%d^2+%d^2+%d^2=%d^2\n",i, j, k, m);
							flag = 0; break;
						}
                        //x=3的情况
						else if ((i * i * i + j * j * j + k * k * k == m * m * m && x == 3)) {
							printf("%d^3+%d^3+%d^3=%d^3\n", i, j, k, m);
							flag = 0; break;
						}
					}
		if (flag)   //没有符合条件的数据
			printf("No such numbers.\n");
		cnt++;								
	}
}

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值