(百例编程)45.真分数分解为埃及分数
来源:互联网 发布:现在哪个网络购物好 编辑:程序博客网 时间:2024/05/23 02:06
题目:分子为1 的分数称为埃及分数,现输入一个真分数,请将该分数分解为埃及分数。
思路:用了贪婪算法+一些条件改良来求的。主要算法还是贪婪算法,所以不一定得到最优解。
程序://真分数分解为埃及分数// BY as1138 2011-01-31#include <iostream>using namespace std;int gongyueshu(int a,int b);int main(void){ int a1,b1,ra,zz,gong;while(true) { zz = 0; cout<<"请输入分子:"<<endl; cin>>a1; cout<<"请输入分母: "<<endl; cin>>b1; if (!b1) { cout<<"分母不能为0!"<<endl; continue; } cout<<"结果为:"<<a1<<"/"<<b1<<"="; if (a1 >= b1) { while (a1 >= b1) { a1 -= b1; ++zz; } } while(a1 != 0){ if (a1 == 3) { cout<<"1/"<<b1/2<<"+"; cout<<"1/"<<b1; break; } if (a1 == 1) { cout<<"1/"<<b1; break; } ra = b1/a1 + 1; gong = ra * b1 / gongyueshu(b1,ra); a1 = (a1 * gong / b1) - (1*gong/ra); b1 = gong; cout<<"1/"<<ra<<"+";}while (zz--){ cout<<"+1";}cout<<endl;}return 1;}int gongyueshu(int a,int b)//最大公约数{int ma,mi,t;ma = a > b ? a : b;mi = a > b ? b : a;while (mi){t = ma % mi; ma = mi;if(!t)return mi;mi = t;}}
- (百例编程)45.真分数分解为埃及分数
- 分数趣题(将真分数分解为埃及分数)
- 华为OJ(将真分数分解为埃及分数)
- 将真分数分解为埃及分数
- 将真分数分解为埃及分数
- 将真分数分解为埃及分数
- 将真分数分解为埃及分数
- P65-将真分数分解为埃及分数
- 将真分数分解为埃及分数
- 将真分数分解为埃及分数
- OJ-----真分数分解为埃及分数*
- 将真分数分解为埃及分数
- 将真分数分解为埃及分数
- 将真分数分解为埃及分数
- 4.2趣味分数之真分数分解为埃及分数
- 真分数分解成埃及分数
- 华为oj 将真分数分解为埃及分数
- 华为oj 将真分数分解为埃及分数
- Qt日记(3)-360新版特性界面实现(3)
- Java环境变量的配置
- 关于“C# 窗体程序自适应分辨率” 的一些探索
- (分组背包)ACboy needs your help(hdu1712)
- 表,栈,队列程序代码片段
- (百例编程)45.真分数分解为埃及分数
- POJ3261 Milk Patterns,后缀数组, 出现k次的重复子串
- 微软正式发布Windows 8 Release Preview (下载地址)
- java实训记录之一
- 进行Android单元测试
- netty初步使用2
- (百例编程)46.列出真分数序列
- Windows Server 2008 R2 更新后远程桌面无法连接
- (百例编程)47.计算分数的精确值