首页 > 代码库 > 分数拆分
分数拆分
分数拆分
题目描述
输入正整数k,找到所有的正整数x>=y,使得1/k=1/x+1/y
输入
输入包括多行,每行一个正整数k,1<=k<=100000
输出
输出所有成立的分数式,按x从大到小的顺序
样例输入
2
12
样例输出
1/2=1/6+1/3
1/2=1/4+1/4
1/12=1/156+1/13
1/12=1/84+1/14
1/12=1/60+1/15
1/12=1/48+1/16
1/12=1/36+1/18
1/12=1/30+1/20
1/12=1/28+1/21
这个题目即使根据x,y,k满足关系式可以判断出y大于k小于2k,同时x大于2k,
题目描述
输入正整数k,找到所有的正整数x>=y,使得1/k=1/x+1/y
输入
输入包括多行,每行一个正整数k,1<=k<=100000
输出
输出所有成立的分数式,按x从大到小的顺序
样例输入
2
12
样例输出
1/2=1/6+1/3
1/2=1/4+1/4
1/12=1/156+1/13
1/12=1/84+1/14
1/12=1/60+1/15
1/12=1/48+1/16
1/12=1/36+1/18
1/12=1/30+1/20
1/12=1/28+1/21
1/12=1/24+1/24
#include<iostream>
#define MAX 300000
using
namespace
std;
int
main()
{
int
k;
float
c;
while
(cin>>k)
{
for
(
int
i=k+1;i<=2*k;i++)
//y
{
c=(
float
)i*k/(i-k);
int
x=c;
if
(x==c&&x>0)
cout<<1<<
‘/‘
<<k<<
‘=‘
<<1<<
‘/‘
<<x<<
‘+‘
<<1<<
‘/‘
<<i<<endl;
}
}
}
再通过先运算方式,就可以缩小穷举范围
同时需要考虑整型和浮点型的关系,直接做/法便会丢解
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。