一个整数的个位是7,把7移至最高位上,其他数字顺序不变,新数是原来那个数的7倍。
编程求出满足此条件的最小数。怎么做?快快已知一个正整数的个位数为7,将7移到该数的首位,其它数字顺序不变,则得到的新数恰好是原数的7倍,编程找出满足上述要求的最小自然数...
编程求出满足此条件的最小数。怎么做?
快快
已知一个正整数的个位数为7,将7移到该数的首位,其它数字顺序不变,则得到的新数恰好是原数的7倍,编程找出满足上述要求的最小自然数 展开
快快
已知一个正整数的个位数为7,将7移到该数的首位,其它数字顺序不变,则得到的新数恰好是原数的7倍,编程找出满足上述要求的最小自然数 展开
1个回答
展开全部
假设满足此条件的数为
10*X+7,设Y=X的位数,则有如下关系
(10*X+7)*7=7*10^Y+X
求出
X=(7*10^Y-49)/69
代入整数Y,当Y值满足X为整数时,即可得出该数,最小应该为1014492753623188405797。
10*X+7,设Y=X的位数,则有如下关系
(10*X+7)*7=7*10^Y+X
求出
X=(7*10^Y-49)/69
代入整数Y,当Y值满足X为整数时,即可得出该数,最小应该为1014492753623188405797。
追问
用编程怎么编
追答
这个数比较大,我也不知道该如何处理,下面提供另外一种方法:
已知要求的数A个位数为7,因为其乘以7得到的数B与A正好错一位,因此通过乘法规则求得所有的数。
比如A的十位数应该是7×7/10的余数9,百位数是7×9+int(7×7)的余数7,依此类推,当余数为1且进位为0时,得到的数即可满足,第一次出现时得出的数最小,以下为C语言程序
#include
#include
main()
{
int i=7,j=0,k=0;
int tmp=0;
int Num[100];
Num[0]=7;
for(;!((i==1)&&(j==0));)
{
tmp=7*i+j;
i=tmp%10;
j=tmp/10;
Num[k]=i;
tmp=k;
k++;
}
for(k=tmp;k>=0;k--)
{
printf("%d",Num[k]);
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询