整数移位

题目:整数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;
}



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值