将真分数化为埃及分数:
来源:互联网 发布:unity3d粒子系统水流 编辑:程序博客网 时间:2024/05/16 14:11
分子为1的分数称为埃及分数。现输入一个真分数(分子比分母小的分数,叫做真分数),请将该分数分解为埃及分数。如:8/11 = 1/2+1/5+1/55+1/110。
接口说明
/*
功能: 将分数分解为埃及分数序列
输入参数:
String pcRealFraction:真分数(格式“8/11”)
返回值:
String pcEgpytFraction:分解后的埃及分数序列(格式“1/2+1/5+1/55+1/100”)
*/
public static String ConvertRealFractToEgpytFract(String pcRealFraction)
{
return null;
}
主要思路是:首先将string转换成int型进行除法运算,类型转换工具a=atoi(str1.c_str())。分数为a/b
(1)看是否能够直接换成埃及分数
(2)如果不能,则i=b/a+1,即减去1/i再进行比较;减去之后a=a*i-b;b=b*i;
(3)当有特殊情况,如a=3,b为偶数的时候,可以直接化成1/b+1(b/2),3/8=1/4+1/2
#include <iostream>#include <string>using namespace std;void ConvertRealFractToEgpytFract(string s) { string str1,str2;string result;int i;int len=s.find('/');str1.assign(s,0,len);str2.assign(s,len+1,s.length()-len-1);int a=atoi(str1.c_str());int b=atoi(str2.c_str());int k=0;while(true){if(b%a==0){i=b/a;a=1;}else{i=(b/a)+1;//cout<<"i"<<i<<endl;}if(a==1){cout<< "1/"<<b;break;}else if(a==3&&b%2==0){cout<<"1/"<<(b/2)<<"+"<<"1/"<<b<<endl;break;}else{cout<<"1/"<<i<<"+";} a=a*i-b;b=b*i;} }int main(){string str;cin>>str;ConvertRealFractToEgpytFract(str);system("pause");return 0;}
0 0
- 将真分数化为埃及分数:
- 将真分数分解为埃及分数
- 将真分数分解为埃及分数
- 将真分数分解为埃及分数
- 将真分数分解为埃及分数
- P65-将真分数分解为埃及分数
- 将真分数分解为埃及分数
- 将真分数分解为埃及分数
- 将真分数分解为埃及分数
- 将真分数分解为埃及分数
- 将真分数分解为埃及分数
- 分数趣题(将真分数分解为埃及分数)
- 华为OJ(将真分数分解为埃及分数)
- 华为oj 将真分数分解为埃及分数
- 华为oj 将真分数分解为埃及分数
- 【华为OJ】【101-将真分数分解为埃及分数】
- 华为OJ 初级:将真分数分解为埃及分数
- 华为OJ——将真分数分解为埃及分数
- 【hadoop】13、hadoop2.5搭建集群
- 牛客网(阿里巴巴2010搜索研发C++工程师笔试卷)
- 黑马程序员---异常总结
- 动态规划三部曲之解决最长公共子序列问题(三)
- 串口读写程序
- 将真分数化为埃及分数:
- Vim简易教程
- 请关闭你的等死模式
- JavaScript权威指南_114_第15章_脚本化文档_15.2-选取文档元素-通过name选取元素
- 向死而生——我修的死亡学分
- 浅谈反素数
- Mac OS上Java用JNI调用C++
- linux是32位还是64位的识别
- 集创意于意灵,呈美忆予大家