考虑方程式 :a 3 + b 3 = c 3 + d 3 a^{3}+b^{3} = c^{3}+ d^{3} a3+b3=c3+d3
其中:a、b、c、d是互不相同的小于30的正整数。这个方程有很多解。比如:a = 1,b=12,c=9,d=10就是一个解。因为:1的立方加12的立方等于1729,而9的立方加10的立方也等于1729。当然,a=12,b=1,c=9,d=10显然也是解。如果不计abcd交换次序的情况,这算同一个解。那么a,b,c,d都可能是哪些数呢呢?
找到所有小于30的不同的正整数解。把a b c d按从小到大排列,用空格分隔,每个解占用1行。字典序输出(不同解间的顺序可以不考虑。)
Input
无
Output
1 9 10 12
题解 题目看起来就很暴力,可以说是完全的大水题,但是还是要注意一些细节上的层面噢!
话不多说,首先先上错误示范(也就是我的第一反应)
#include
using namespace std;
int main(){
for(int i=1;
i<30;
i++){
for(int j=1;
j<30;
j++){
for(int m=1;
m<30;
m++){
for(int n=1;
n<30;
n++){
if(i*i*i+j*j*j==m*m*m+n*n*n){
if(i
【蓝桥杯|萌新打卡 蓝桥杯 算法基础 暴力枚举——立方和等式 暴力大法好】你品品,你细品,你会发现这完全是行不通的(仔细看题),原因在于,如果a,b,c,d已经是从小到大的顺序,怎么可能会满足立方和等式呢?所以真正的判断条件应该是
i*i*i+m*m*m==j*j*j+n*n*n||i*i*i+n*n*n==j*j*j+m*m*m
其实也就是记得调换一下四个数的顺序即可啦。
只能说是一个小小坑,在提交代码前一定要仔细思考一遍咯!
AC代码
#include
using namespace std;
int main(){
for(int i=1;
i<30;
i++){
for(int j=1;
j<30;
j++){
for(int m=1;
m<30;
m++){
for(int n=1;
n<30;
n++){
if(i*i*i+m*m*m==j*j*j+n*n*n||i*i*i+n*n*n==j*j*j+m*m*m){
if(i
清楚明白,简单粗暴
推荐阅读
- 蓝桥杯|蓝桥杯.颠倒的价牌(暴力枚举)
- 每日刷题———蓝桥杯真题|蓝桥杯2018第九届C语言B组省赛总决赛习题题解——习题A.换零钞(暴力枚举法)
- 蓝桥杯算法训练|蓝桥杯算法训练 数字游戏 C语言实现
- 蓝桥杯|蓝桥杯——算法训练——进击的青蛙
- java|java 蓝桥杯 输出组合_Java蓝桥杯——排列组合
- 蓝桥杯|Java蓝桥杯——杨辉三角
- 蓝桥杯|蓝桥杯——JAVA大学C组——回文素数
- 笔记|第十二届蓝桥杯——Java软件开发(省赛)(括号序列(笔记15))
- java|Java蓝桥杯——九宫幻方