水仙花数

xiaoxiao2021-02-28  11

/*题目描述 春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的: “水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。 现在要求输出所有在m和n范围内的水仙花数。 输入描述: 输入数据有多组,每组占一行,包括两个整数m和n(100 ≤ m ≤ n ≤ 999)。 输出描述: 对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开; 如果给定的范围内不存在水仙花数,则输出no; 每个测试实例的输出占一行。 示例1 输入 100 120 300 380 输出 no 370 3718*/ #include <iostream> #include <stdio.h> #include <math.h> using namespace std; int main() { double arr[][2] = {100,120,300,380}; double rowNum = (sizeof(arr)/sizeof(int))/(sizeof(*arr)/sizeof(int)); for (int i=0; i<rowNum; i++) { int m = arr[i][0]; int n = arr[i][1]; if (m<100 || m>999 || n<100 || n>999) return -1; double sum = 0; int count = 0; for (int j=m; j<=n; j++) { double a_1 = j; double a_2 = j/10; double a_3 = j/100; double sum = pow(a_1,3) + pow(a_2,3) + pow(a_3,3); if (sum == j) { cout<<j<<' '; count++; } } if(count == 0) cout<<"no"; cout<<endl; } return 0; } 上述代码编译器可通过,但是牛客网上通不过,以下代码在牛客网上可以通过。 #include <iostream> #include <stdio.h> #include <math.h> #include <vector> using namespace std; int main() { vector<int> vec; int m,n; while (cin>>m>>n) { for (int j=m; j<=n; j++) { double a_1 = j; double a_2 = j/10; double a_3 = j/100; double sum = pow(a_1,3) + pow(a_2,3) + pow(a_3,3); if (sum == j) vec.push_back(j); } if(vec.size() == 0) cout<<"no"; else { for (int k=0; k<vec.size()-1; k++) cout<<vec[k]<<' '; cout<<vec[vec.size()-1]; } cout<<endl; } return 0; } 欢迎大家指正!!!
转载请注明原文地址: https://www.6miu.com/read-1100254.html

最新回复(0)