求水仙数
[quote]原帖由 [i]ai357299256[/i] 于 2008-4-29 16:13 发表 [url=http://www.hackerxfiles.net/redirect.php?goto=findpost&pid=767042&ptid=98055][img]http://www.hackerxfiles.net/images/common/back.gif[/img][/url]哈哈,for 语句。 教材上还有怎么一道题 ,和这个差不多。编程找出一亿以内的水仙花数。所谓水仙花数就是各位数字的立方和等于该数本身。如 153=1*1*1+5*5*+3*3*3,有兴趣的话自己可以做下。 ... [/quote]
#include<iostream>
#include<math.h>
using namespace std;
//i=153,n=3 ;j=1,k=3;j=2 k=8
int main()
{
int i,j,k,n; //i是用来循环,n用来判断几位数
for (i=1;i<=100000000;i++) //最多9位数
{
n=0;
if ((i/10)<1) //用switch,case做可以写的简单些
n=1;
else if ((i/100)<1)
n=2;
else if ((i/1000)<1)
n=3;
else if ((i/10000)<1)
n=4;
else if ((i/100000)<1)
n=5;
else if ((i/1000000)<1)
n=6;
else if ((i/10000000)<1)
n=7;
else if ((i/100000000)<1)
n=8;
else if ((i/1000000000)<1)
n=9;
k=0;
for(j=1;j<=n;j++)
k=k+pow((int(i/(pow(10,(j-1)))))%10,3); //(int{ i初以(10的j-1次方)}再%10)的立方
if (k==i) cout<<i<<endl;
}
return 0;
}
//得到结果1,153,370,371,407 看一下,学习。 ................看看~! 我用深搜,总感觉光用循环不太对呢。。。
不过,我这个深搜是讲顺序的,所以结果很可怕。
如果要计算N=100,请把输出方案的语句注释掉。
N是总钱数,用分表示。
/*
By Gip0
20080530 2142
*/
#include <stdio.h>
#include <stdlib.h>
bool func(int n);
bool print(int n);
int N = 5; //money (cents) in total
int notes[] = {1, 2, 5};
int steps[101] = {0};
long results = 0;
int main()
{
func(1);
printf("%d\n", results);
system("PAUSE");
return 0;
}
bool func(int n)
{
for(int i = 0;i <= 2;i++)
{
if(N - notes[i] < 0)
continue;
if(N - notes[i] > 0)
{
steps[n] = i;
N -= notes[i];
func(n + 1);
N += notes[i];
steps[n] = 0;
}
if(N - notes[i] == 0)
{
steps[n] = i;
print(n);
}
}
return 0;
}
bool print(int n)
{
for(int i = 1;i <= n;i++)
printf("%d ", notes[steps[i]]);
printf("\n");
results++;
return 0;
} 看看。。。。。。。。。。。。。。。 呵呵 .....for 语句和if语句的结合...然后输出 貌似不会很难。。。。。。。。。。。。。。。。。。。。。。。。。 #include <iostream.h>
void main()
{
int i,j,k;
for (i=1;i<100;i++)
for(j=1;j<20;j++)
for(k=1;k<50;k++)
if ((i+2*j+5*k)==100)
cout<<"一分的:"<<i<<" 二分的:"<<j<<" 五分的:"<<k<<endl;
} 我看看::11:: ::11:: ::11:: ::11:: ::11:: ::11:: ::11:: ::11:: 呵呵 我还是对方法比较感兴趣 找一下新思路 很想看看答案::03:: ::03:: ::03:: 对于I和J 的取值范围是不是有点~~~~~~~~~~~~~~~ 学习下,最近在研究c++::11:: ::11:: ::04:: ::04:: ::04:: 看看答案在说 感谢楼主::04:: ::04:: ::04::
