尾数前移

本文探讨了如何通过编程实现将自然数的个位数移动到最前方,并判断该操作后的数值是否为原数值四倍的过程,涉及算法设计与数学逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*
尾数前移:

	求一个自然数N,个位数是6,将6提到最前面所得数是N的四倍
	如:1236----->6123 ?= 4*1236----->如果是,则找到!

解题思路:

	将自然数分成两部分p=123(即6前面的数值)、q=6
	移位之后的数值:6*pow(10,p的位数) + p 
	即:6*pow(10,p的位数) + p = 4*N
	q = N%10;
	p = N/10;
	p的位数()

*/
#include<stdio.h>
#define LENTH 1000000//范围的上线

void fun(int n)
{
	if(n%10 == 6)//首先确定各位是6
	{
		int p = n/10;//6前边的数值
		int q = 6;

		while(p)
		{
			q *= 10;//6前边有几位,6就乘以10的几次方
			p /= 10;
		}
		 
		if(q+(n/10) == 4*n)//q+p == 4*n因为执行完while循环后p已经变成0
		{
			printf("%d\n",n);
		}
	}
}
int main()
{
	for(int i=0;i<=LENTH;++i)
	{
		fun(i);
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值