首页 > 其他 > 详细

尾数前移

时间:2015-04-27 00:28:47      阅读:122      评论:0      收藏:0      [点我收藏+]
/*
尾数前移:

	求一个自然数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;
}
技术分享

尾数前移

原文:http://blog.csdn.net/zongyinhu/article/details/45296267

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!