题目:整数N的尾数是a,把尾数a移到其前面(成为最高位)后所得的数为原整数N的k倍,原整数N至少为多大?
没有考虑限定尾数的情况:
#include <stdio.h>
#include <math.h>
int main()
{
int k;//倍数
printf("请输入倍数:\n");
scanf("%d",&k);
while(k<=0)
{
printf("倍数输入有误,请重新输入:");
scanf("%d",&k);
}
int num = 1;//整数初始化从1开始
int a;//整数最后一位
int count = 0;//整数的位数
int temp;//存放整数的临时变量
while(1)
{
temp = num;
while(temp > 0)//计算整数位数
{
temp /= 10;
count++;
}
a = num % 10;//计算整数最后一位
if(((a*(int)pow(10,count-1) + num/10) / num ) == k)//判断移位后的整数是否是原来的整数K倍
{
printf("最小整数:%d\n",num);
break;
}
num++;//整数加1
count = 0;//整数位数清零
}
return 0;
}
考虑限定尾数的情况:
#include <stdio.h>
#include <math.h>
int main()
{
int k;//倍数
int a;//整数最后一位
printf("请输入倍数:\n");
scanf("%d",&k);
while(k<=0)
{
printf("倍数输入有误,请重新输入:");
scanf("%d",&k);
}
printf("请输入整数尾数:\n");
scanf("%d",&a);
while(a<0 || a>9)
{
printf("整数尾数输入有误,请重新输入:");
scanf("%d",&a);
}
int num = a;//整数初始化从a开始
int count = 0;//整数的位数
int temp;//存放整数的临时变量
while(1)
{
temp = num;
while(temp > 0)//计算整数位数
{
temp /= 10;
count++;
}
if(((a*(int)pow(10,count-1) + num/10) / num ) == k)//判断移位后的整数是否是原来的整数K倍
{
printf("最小整数:%d\n",num);
break;
}
num+=10;//整数加10
count = 0;//整数位数清零
}
return 0;
}