1、“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,现在要求输出所有在m和n范围内的水仙花数。
代码如下:
#include<iostream>
#include<cmath>
#include<cstring>
using namespace std;
int h[20];
int main()
{
int m, n, i, j, a, b, k = 0, c, x;
h[0] = 0;
while (cin >> m >> n)
{
for (i = m; i <= n; i++)
{
j = i;
a = j % 10;
j = j / 10;
b = j % 10;
j = j / 10;
c = j % 10;
x = a * a * a + b * b * b + c * c * c;
if (x == i)
h[k] = i, k = k + 1;
}
if (h[0] == 0)
{
cout << "no" << endl;
} else if (h[0] != 0)
{
for (i = 0; i <= k - 1; i++)
{
if(i!=k-1)
cout << h[i] << ' ';
if(i==k-1)
cout<<h[i];
}
cout << endl;
}
h[0] = 0;
k = 0;
}
}
总结:首先要明确水仙花数的定义,一个各位数字的立方和等于它本身的三位数,利用求余的方法可以算出各位的值,然后求出立方和后,与它本身进行比较,如果相等的话,就输出这个数。需要注意的是,将所有的数输出之后,最后一个数后面不能有空格,否则提交后会显示Presentation Error。
2、给你n个整数,求他们中所有奇数的乘积。
代码如下:
#include<iostream>
using namespace std;
int main()
{
int n,a,i,b;
while(cin>>n)
{
b=1;
for(i=0;i<n;i++)
{
cin>>a;
if(a%2!=0)
{b=b*a;}
}