降维打击(?)
2024-05-25 14:48:15
发布于:广东
27阅读
0回复
0点赞
版本更新了!!!!!
ok学会了cbrt了,可以变成
可能cbrt还是不够精确,所以用float存储,降精度
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
struct node{
int cube, i, j, k;
}a[100005];
int ct, n;
bool cmp(node a, node b){
if(a.cube == b.cube){
if(a.k == b.k){
if(a.j == b.j) return a.i < b.i;
return a.j < b.j;
}return a.k < b.k;
}
return a.cube < b.cube;
}
int main(){
cin >> n;
for(int i = 2; i <= n; i++){
for(int j = 2; j <= i; j++){
int l = cbrt(i * i * i + j * j * j), r = cbrt(i * i * i + 2 * j * j * j);
for(int _ = l; _ <= r; _++){
int k = _ * _ * _ - i * i * i - j * j * j;
float ans = cbrt(k);
if(ans == int(ans) && ans >= 2 && _ <= n && ans <= j) a[++ct] = {_, i, j, ans};
}
}
}sort(a + 1, a + ct + 1, cmp);
for(int i = 1; i <= ct; i++) printf("Cube = %d, Triple = (%d,%d,%d)\n", a[i].cube, a[i].k , a[i].j, a[i].i);
return 0;
}
把n调成1000试试吧
全部评论 2
6
2024-06-30 来自 广东
06
2024-02-23 来自 广东
0
有帮助,赞一个