要求用穷举法 过程一定要简单
----------------解决方案--------------------------------------------------------
呵呵,俺先来个简单的:
#include <stdio.h>
int estimate(long num,int unit) /* 判断数字是否有重复的 */
{
int data[6];
int i,j;
for(i = 0; i < unit; i++) /* 分解各位上的数字,保存在数组中 */
{
data[i] = num % 10;
num /= 10;
}
for(i=0;i<unit-1;i++)
for(j=i+1;j<unit;j++)
if(data[i] == data[j])
return 0; /* 有重复数字,返回0 */
return 1;
}
int main()
{
int age;
long temp1,temp2;
for(age=1;age<200;age++)
{
temp1=age*age*age;
temp2=temp1*age;
if(temp1 >= 1000 && temp1 <= 9999 && temp2 >= 100000 && temp2 <= 999999)
if(estimate(temp1,4) && estimate(temp2,6))
printf("%d ",age);
}
printf("\n");
return 0;
}
[此贴子已经被作者于2007-1-27 18:23:46编辑过]
----------------解决方案--------------------------------------------------------
呵呵,俺先来个简单的:
#include <stdio.h>
int estimate(long num,int unit) /* 判断数字是否有重复的 */
{
int data[6];
int i,j;
for(i = 0; i < unit; i++) /* 分解各位上的数字,保存在数组中 */
{
data[i] = num % 10;
num /= 10;
}
for(i=0;i<unit-1;i++)
for(j=i+1;j<unit;j++)
if(data[i] == data[j])
return 0; /* 有重复数字,返回0 */
return 1;
}
int main()
{
int age;
long temp1,temp2;
for(age=1;age<200;age++)
{
temp1=age*age*age;
temp2=temp1*age;
if(temp1 >= 1000 && temp1 <= 9999 && temp2 >= 100000 && temp2 <= 999999)
if(estimate(temp1,4) && estimate(temp2,6))
printf("%d ",age);
}
printf("\n");
return 0;
}
思路懂了 但是把你的代码放到win-tc里面好象有错误
编译不出来啊
----------------解决方案--------------------------------------------------------
俺编译没有出错呀。
----------------解决方案--------------------------------------------------------
哦,是俺在注释前面加入了中文状态下的空格不能被编译器识别。下面这个就行了:(内容没有作任何修改)
#include <stdio.h>
int estimate(long num,int unit) /* 判断数字是否有重复的 */
{
int data[6];
int i,j;
for(i = 0; i < unit; i++) /* 分解各位上的数字,保存在数组中 */
{
data[i] = num % 10;
num /= 10;
}
for(i=0;i<unit-1;i++)
for(j=i+1;j<unit;j++)
if(data[i] == data[j])
return 0; /* 有重复数字,返回0 */
return 1;
}
int main()
{
int age;
long temp1,temp2;
for(age=1;age<200;age++)
{
temp1=age*age*age;
temp2=temp1*age;
if(temp1 >= 1000 && temp1 <= 9999 && temp2 >= 100000 && temp2 <= 999999)
if(estimate(temp1,4) && estimate(temp2,6))
printf("%d ",age);
}
printf("\n");
getch();
return 0;
}
----------------解决方案--------------------------------------------------------
过路的来学习下思路
----------------解决方案--------------------------------------------------------
恩 谢谢 问题解决
----------------解决方案--------------------------------------------------------
#include<stdio.h>
int main(void)
{
long long b;
for(b=1;b<100;b++)
{
if( (b*b*b) > 999 && (b*b*b) < 10001 && (b*b*b*b) > 99999
&& (b*b*b*b) < 1000001 && b%11 !=0)
{
printf("the age is:%lld\n",b);
}
}
getch();
return 0;
}
----------------解决方案--------------------------------------------------------
楼上的运算结果是18 52 90 132
但是90和132的三次方明显不是四位数啊.
----------------解决方案--------------------------------------------------------
呵呵,是俺的错了,正确答案应该只有一个:18
我只改了一个地方,见红色处:
#include <stdio.h>
int estimate(long num,int unit) /* 判断数字是否有重复的 */
{
int data[6];
int i,j;
for(i = 0; i < unit; i++) /* 分解各位上的数字,保存在数组中 */
{
data[i] = num % 10;
num /= 10;
}
for(i=0;i<unit-1;i++)
for(j=i+1;j<unit;j++)
if(data[i] == data[j])
return 0; /* 有重复数字,返回0 */
return 1;
}
int main()
{
int age;
long temp1,temp2;
for(age = 1;age < 200;age++)
{
temp1 = (long)age * age * age;
temp2 = temp1 * age;
if(temp1 >= 1000 && temp1 <= 9999 && temp2 >= 100000 && temp2 <= 999999)
if(estimate(temp1,4) && estimate(temp2,6))
printf("%d ",age);
}
printf("\n");
return 0;
}
如果不用强制类型转换,则可以将年龄age设为长整形。
[此贴子已经被作者于2007-1-30 2:04:54编辑过]
----------------解决方案--------------------------------------------------------