当前位置: 代码迷 >> C语言 >> [休闲]
  详细解决方案

[休闲]

热度:400   发布时间:2007-05-10 20:54:10.0
[休闲]
某数3次方是4位数,4次方是6位数,并且这两个数中没有重复数字.如何用C语言编程求出该数呢?
那位高手请指教,谢了!

[此贴子已经被作者于2007-5-13 14:20:47编辑过]

搜索更多相关的解决方案: 休闲  

----------------解决方案--------------------------------------------------------
#include<stdio.h>
#include<math.h>
void main()
{
int x,i,a[9]={11,22,33,44,55,66,77,88,99};
for(x=0;x<100;x++)
{
if((1000<=pow(x,3))&&(pow(x,3)<=9999)&&(pow(x,4)<=999999)&&(pow(x,4)>=100000))
{
for(i=0;i<8;i++)
{
if(x==a[i])break;
else printf("correctnumber is %d\n",x);
break;
}
}
}
getch();
}

我的想法
本人比较菜可能复杂化了
----------------解决方案--------------------------------------------------------

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


----------------解决方案--------------------------------------------------------

某人年龄的3次方是4位数,4次方是6位数
我们可以粗略的知道 该人年龄在10-30之间,
#include<stdio.h>
#include<math.h>
int bijiao(long c,int num); /*检查数字C是否有重复的数字有就返回0没就返回1(num是C的位数)*/

main()
{
long x;

for(x=11;x<30;x++)
{
if(x*x*x<=9999 && x*x*x*x>=100000 && x*x*x*x<=999999)
{

if(bijiao(x*x*x,4) && bijiao(x*x*x*x,6))
printf("x= %ld x^3= %ld x^4= %ld\n",x,x*x*x,x*x*x*x); /*输出符合要求的数据*/

}

}
getch();
}

int bijiao(long c,int num)
{
int a[6],i=0,k=0;

while(c>0) /*提取各个位上的数*/
{
a[i]=c%10;
c=c/10;
i++;
}
for(i=0;i<num;i++)
for(k=0;k<num;k++)
{
if(i!=k)
if(a[i]==a[k])
return 0;
}
return 1;
}
不知道这样做好不好
但是值的一提的是pow()返回的数据类型 是double的

[此贴子已经被作者于2007-5-11 10:30:34编辑过]


----------------解决方案--------------------------------------------------------
我的笨方法。

#include<stdio.h>
main()
{ long int c3,c4,a1,a2,i;
for (i=10;i<100;i++)
{ c3=i*i*i;
c4=i*i*i*i;
a1=i%10;a2=i/10;
if ( (a1!=a2) && (c3>1000) && (c3<9999) && (c4>100000) && (c4<999999)) printf("%d ",i);
}
}

[此贴子已经被作者于2007-5-11 11:12:09编辑过]


----------------解决方案--------------------------------------------------------
#include<stdio.h>
void main()
{int a,b;
long int c;
for(a=1;a<100;a++)
{b=a*a*a;
c=a*a*a*a;
if(b>999&&b<=9999||c>99999&&c<=999999)
printf(" %d",a);
}
printf("\n");
}
----------------解决方案--------------------------------------------------------
再加a%11!=0
----------------解决方案--------------------------------------------------------
即变成#include<stdio.h>
void main()
{int a,b;
long int c;
for(a=1;a<100;a++)
{b=a*a*a;
c=a*a*a*a;
if(b>999&&b<=9999||c>99999&&c<=999999)
{if(a%11!=0)
printf(" %d",a);
}
}
printf("\n");
}
----------------解决方案--------------------------------------------------------
回复:(YOGIOH)#include#include
thank you for your help!
----------------解决方案--------------------------------------------------------
  相关解决方案