目的:求水仙花数
要求:要满足ABC为各自数位立方和(A3+B3+C3),且对数ABC有上下限要求[100, 999]
思路:循环结构,暴力求解。因为是三数位立方和,构造三层循环求解。
代码如下:
#include<iostream> #include<cmath> using namespace std; #define Min 100//minimum of daffodil numbers #define Max 999//maximum of daffodil numbers int main() { for(int i = 0; i < 10; i++){ for(int j = 0; j < 10; j++){ for(int k = 0; k < 10; k++){ int sum = pow(i, 3) + pow(j, 3) + pow(k, 3); if(sum > Max){ break; } else if(sum >= Min){ if(sum == i * 100 + j * 10 + k){//If match cout << i << ' ' << j << ' ' << k << ' ' << sum << endl; } } } } } return 0; }
优化:因为循环采取各层递增,可以在循环里判断立方和是否大于上限,此时即可终止此次最内层循环