『每日一题 2012-04-18』将真分数分解为埃及分数

问题描述:

分子为1的分数称为埃及分数,现输入一个真分数,请将该分数分解为埃及分数。
如:8/11=1/2+1/5+1/55+1/110。

*问题分析与算法设计
若真分数的分子a能整除分母b,则真分数经过化简就可以得到埃及分数,若真分数的分子不能整除分母,则可以从原来的分数中分解出一个分母为b/a+1的埃及分数。用这种方法将剩余部分反复分解,最后可得到结果。

#include<stdio.h>
int main(void)
{
	long int a,b,c;

	printf("Please enter a optional fraction(a/b):");
	scanf("%ld/%ld",&a,&b); /*输入分子a和分母b*/
	printf("It can be decomposed to:");
	while(true)
	{
		if(b%a) /*若分子不能整除分母*/
			c=b/a+1; /*则分解出一个分母为b/a+1的埃及分数*/
		else
		{
			c=b/a; a=1;
		} /*否则,输出化简后的真分数(埃及分数)*/
		if(a==1)
		{
			printf("1/%ld\n",c);
			break; /*a为1标志结束*/
		}
		else
			printf("1/%ld + ",c);

		a=a*c-b; /*求出余数的分子*/
		b=b*c; /*求出余数的分母*/
		if(a==3) /*若余数为3,输出最后两个埃及分数*/
		{
			printf("1/%ld + 1/%ld\n",b/2,b);
			break;
		}
	}

	return 0;
}
时间: 2024-10-23 02:33:27

『每日一题 2012-04-18』将真分数分解为埃及分数的相关文章

『每日一题 2012-04-17』巧排数字

问题描述: 将1,2,3,--,20这20个连续的自然数排成一圈,使任意两个相邻的自然数之和均为素数 强人的思路: 1 找出所有和为素数的数对 2 找Hamilton环 找所有和为素数的数对的方法: 1,2,3,--,20任意两数之和的最大值为39,可取40.故首先,我们找出1到40之间的所有素数,实现函数如下: int create_prime(int *a, int max)  // 找到  1 到 max 间的所有素数  {        int *x;     int i,j;    

『每日一题 2012-03-25』巧填数字

问题描述: *问题分析与算法设计 问题本身并不复杂,可以对乘式中的每一位使用穷举法,最终可以得到结果.本题的关键在于怎样有效的判断每个部分积的每一位是否满足题意,这一问题处理不好,编写的程序会很长.程序实现中采用了一个判断函数,通过传入函数的标志字符串对所有的数进行统一的判断处理. #include<stdio.h> void print(long a,long b,long s1,long s2,long s3); int jud(long q,char *pflag); int main(

“济南车管”中新辟“每日一题”栏目

本报7月8日讯(记者王若松)"学习时间又到了,亲们答对了么?"近日,济南市车管所在其http://www.aliyun.com/zixun/aggregation/1144.html">腾讯微博"济南车管"中新辟"每日一题"栏目,通过微博的形式帮助广大车主及驾考人员随时随地加强道路交通理论学习,强化安全出行意识. 记者了解到,"每日一题"中的所有题目均出自最新的驾考理论考试题库,供博友们学习参考.

借题“2012搞笑诺贝尔奖” 解读网站优化中的几点疑惑

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 2012搞笑诺贝尔奖颁发了很多有意思的奖项,这些奖项看似无聊无趣甚至无厘头,但是它的一些观点却起我的思考,这些思考和奖项本身无关,只是给了我一些启迪,通过这些思绪,让我感觉到,作为一名草根站长,要想成功就要解放思想.遇到不解的问题,不要急着否定,说不定那是个提升自己能力的机会!下面的分析和奖项内容无关,意在引题. 换个角度思考,或许就能找到突

Oracle的常见错误及解决办法

                      ORA-12528: TNS:listener: all appropriate instances are blocking new connections     ORA-12528问题是因为监听中的服务使用了动态服务,实例虽然启动,但没有注册到监听.实例是通过PMON进程注册到监听上的,而PMON进程需要在MOUNT状态下才会启动.所以造成了上面的错误. 解决这个问题,有三种方法:1.把监听设置为静态:2.在tnsnames.ora中追加(UR=

html中table的画法及table和div的区别

    最近项目中,根据客户的要求需要在页面上展示各种报表什么的,各种表格的都会出现.这里也将table的画法,做一下总结.办法虽笨但很实用.这也是从高人那里学来的,总之是屡试不爽啊.就以下面的表格为例.           若想画上面的表格,首先得确定是几行几列的.怎么确定?       总之,不管三七二十一,出现横线的地方画一红横线,出现竖线的地方画一竖线分割,如上图所示,已基本确定是一个5行11列的表格.表格基本框架已确定, 接下来就是用table标签来实现上面的表格了.简单介绍一下tab

Android学习笔记——文件路径、内容Uri学习笔记[转]

一.URI 通用资源标志符(Universal Resource Identifier, 简称"URI"). Uri代表要操作的数据,Android上可用的每种资源 - 图像.视频片段等都可以用Uri来表示. URI一般由三部分组成: 访问资源的命名机制.  存放资源的主机名.  资源自身的名称,由路径表示.  Android的Uri由以下三部分组成: "content://".数据的路径.标示ID(可选) 举些例子,如:  所有联系人的Uri: content:/

win7-AfxRegisterWndClass() 未获得透明背景

问题描述 AfxRegisterWndClass() 未获得透明背景 hbrBackground=0,则窗口为透明窗口,但win7上编译的结果并不是啊. 请高手指导 解决方案 UIWebView背景透明MFC 窗口背景透明WinFrom 中 label背景透明 解决方案二: 没有这个说法.参考:http://www.cnblogs.com/fangyukuan/archive/2012/04/18/2454660.html

mfc-MFC中对话框的设置问题

问题描述 MFC中对话框的设置问题 对话框的透明度怎么设置呢?我用了setwindowlong和setlayeredwindowattributes这两个都不行还是自己加的有误,有谁知道的话帮忙细说一下 解决方案 setlayeredwindowattributes,这个思路是对的.你可以google现成的程序来对照 http://www.cnblogs.com/cmooon/archive/2012/04/18/2455402.htmlhttp://blog.csdn.net/glt3953/