n不能是7;
使得pow(k,m)和pow(k,n)均大于或等于1000,

第一题我根据三楼的思想也写了自己的程序,但发现有些结果运行不对,也不知道问题出在什么地方了,还请高手帮忙看看啊 关注中……多谢了!
#include <stdio.h>
#include <math.h>
void main()
{
int m, n, flag=1;
long int k, km_mant, kn_mant;
printf("Please entry the value of k(k>1):\n");
scanf("%d", &k);
for(m=2;;m++)
{
if( pow(k,m)<1000 )
continue;
else
{
km_mant = (int)pow(k,m)%1000;
for(n = 1; n < m; n++)
{
if( pow(k,n) >= 1000 )
{
kn_mant = (int)pow(k,n)%1000;
if( km_mant == kn_mant )
{
printf("%d+%d=%d\n", m, n, m+n);
flag=0;
break;
}
}
}
}
if(flag==0)
break;
}
printf("%d\t%d\n", (int)pow(k,m),(int)pow(k,n));
printf("%d\t%d\n", km_mant, kn_mant);
}
第一题我根据三楼的思想也写了自己的程序,但发现有些结果运行不对,也不知道问题出在什么地方了,还请高手帮忙看看啊 关注中……多谢了!
#include <stdio.h>
#include <math.h>
void main()
{
int m, n, flag=1;
long int k, km_mant, kn_mant;
printf("Please entry the value of k(k>1):\n");
scanf("%d", &k);
for(m=2;;m++)
{
if( pow(k,m)<1000 )
continue;
else
{
km_mant = (int)pow(k,m)%1000;
for(n = 1; n < m; n++)
{
if( pow(k,n) >= 1000 )
{
kn_mant = (int)pow(k,n)%1000;
if( km_mant == kn_mant )
{
printf("%d+%d=%d\n", m, n, m+n);
flag=0;
break;
}
}
}
}
if(flag==0)
break;
}
printf("%d\t%d\n", (int)pow(k,m),(int)pow(k,n));
printf("%d\t%d\n", km_mant, kn_mant);
}
你和三楼思想还是不一样的.
你的不能计算出很大的n,m因为你的pow()是会超出数据范围
这个因该能过了