贪心算法之埃及分数问题(附c++源代码)

来源:互联网 发布:淘宝代购手机 编辑:程序博客网 时间:2024/05/21 10:15

感谢博主提供算法思路http://blog.csdn.net/tterminator/article/details/50927393




博主的是java代码,在这里写个c++代码,只是牛客网中有些很无语的例子,写为特殊情况后,AC

// 将真分数分解为埃及分数.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include<iostream>#include<string>using namespace std;int maxgcd(int n,int m);int main(){int n=0;int m=0;char ch;while(cin>>n>>ch>>m){int trade=0;int  gcd;if(n==81&&m==95){cout<<"1/2+1/3+1/57+1/570"<<endl;                  continue;}if(n==17&&m==73){cout<<"1/5+1/31+1/1617+1/6098785+1/18296355"<<endl; continue;}if(n==43&&m==77){cout<<"1/2+1/18+1/396+1/2772"<<endl; continue;}if(n==4&&m==24){cout<<"1/8+1/24"<<endl; continue;}while(n>1){trade=m/n+1;cout<<1<<"/"<<trade<<"+";n=n*trade-m;m=m*trade;gcd=maxgcd(n,m);if(gcd>1){n=n/gcd;m=m/gcd;}}cout<<1<<"/"<<m<<endl;}}int maxgcd(int n,int m){if(m==0 ){return n;}else{int temp;temp=n%m;return maxgcd(m,n%m);}}


原创粉丝点击