水仙花问题
对一个3位的整数num,如果其各位上数字的立方和m刚好和num相等,则称num为水仙花数。例如13+53+33=153,所以153是水仙花数。编程(a,b)开区间(不包括a和b)的的所有水仙花数。
[解决办法]
for(i=1;i<=9;i++)
for(j=0;j<=9;j++)
for(k=0;k<=9;k++)
{
sum1 = i*i*i+j*j*j+k*k*k;
sum2 = i*100+j*10+k;
if( == i*100+j*10+k)
printf("%d",sum2);
}
[解决办法]
http://topic.csdn.net/u/20081104/09/CE80A74F-AB45-4A16-9BDF-8F5DA6D91378.html
[解决办法]
void abc(int a,int b)
{
static int arr[4]={153,370,371,407};
int beg=-1,end=-1;
for(int i=0;i<4;i++)
{
if(beg==-1)
{
if(arr[i]>=a)
beg=i;
else break;
}
if(arr[i]<b)
{
end=i;
}
}
for(int j=beg;j<=end;j++)
printf("%d\n",arr[j]);
}
int main()
{
abc(100,999);
}
[解决办法]
- C/C++ code
int sqrt(int m, int n) //该函数用于计算m的n次方,并返回{ int sum = 1; while(n > 0) { sum *= m; n--; } return sum;}int fun(int m) { int sum = sqrt(m % 10, 3); // m%10(m对10求余)计算m的个位数的3次幂赋值给sum if(m > 1){ sum += fun(m / 10); // m/10 是把m的个位数去掉,然后传给fun(int)函数, } return sum; }int main(){ int m; scanf("%d", &m); if ( m == fun(m) ) printf("该数是水仙花数"); return 0;}
[解决办法]
http://topic.csdn.net/u/20120305/22/e4becd72-42cd-450c-919d-43f25afd8376.html
我之前的代码就是这样:
- C/C++ code
#include<stdio.h> main(){ int i, a, b, c; for(i=100;i<1000;i++) { a = (i/100); b = (i%100)/100; c = (i%10)/10; if(a*a*a + b*b*b + c*c*c == i) printf("%d\n",i); }}
[解决办法]
#include <stdio.h>
#include <stdlib.h>//测试一个数是不是水仙花数
int daffodils(int n)
{
int i,p,s;
s=0;
p=n;
while(p!=0)
{
i=p%10;
s=s+i*i*i;
p=p/10;
}
if (s==n)
printf("%d is the dafodils number!",n);
else
printf("%d is NOT a dafodils number!",n);
return1;
return 0;
}
int main(void)
{
int n;
printf("please input the number:");
scanf("%d",&n);
daffodils(n);
system ("pause");
return 0;
}