uva 368 Perfect Cubes
阿新 • • 發佈:2019-02-17
題目:輸出滿足 a3 = b3 + c3 + d3
的所有情況
注意:1 按照a遞增的順序排列
2 a,b,c,d 的最小值為2!
技巧: 先把所有的立方打表。然後直接用表中元素判斷
法一:打表
#include <cstdio> #include <string.h> #include <cstdlib> #include <cmath> #include <ctgmath> #include <iostream> #include <vector> #include <algorithm> #include <map> using namespace std; int main() { //所有200以內三次方打表 int cube[201]; for(int i = 0; i <=200; i ++) cube[i]= i*i*i; //判斷 for(int i = 6;i < 201;i++){ for(int j = 2;j < 201; j++){ for(int m = j+1; m < 201; m++){ for(int n = m+1; n<201; n++){ if(cube[i] == (cube[n] + cube[j] + cube[m])) printf("Cube = %d, Triple = (%d,%d,%d)\n",i,j,m,n); } } } } return 0; }
法二:
暴力。並利用pow函式
注意 int r = (int)pow(d+0.1, 1.0/3); d+0.1 是不可缺少的。因為轉換成浮點數過程中會有損失