码迷,mamicode.com
首页 > 其他好文 > 详细

尾数前移

时间:2015-04-27 00:32:01      阅读:188      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!