例题7-3 分数拆分(Fractions Again?!, UVa 10976)

欢迎访问我的Uva题解目录哦 https://blog.csdn.net/richenyunqi/article/details/81149109

题目描述

例题7-3 分数拆分(Fractions Again?!, UVa 10976)题目描述

题意解析

输入正整数k,找到所有的正整数 x ≥ y x≥y xy,使得 1 k = 1 x + 1 y \frac{1}{k}=\frac{1}{x}+\frac{1}{y} k1=x1+y1

算法设计

显然,当 x ≥ y x≥y xy时,y的取值范围为 y ∈ [ k + 1 , k + k ] y \in [k+1,k+k] y[k+1,k+k],只需枚举y,如果 1 k − 1 y \frac{1}{k}-\frac{1}{y} k1y1的分子能够化简成1,即分子能够整除分母,就找到了一组满足条件的x和y。

C++代码

#include <bits/stdc++.h>
using namespace std;
int main() {
    
    
    int k;
    while(cin>>k){
    
    
        vector<pair<int,int>>v;
        for(int i=k+1;i<=k+k;++i)
            if(i*k%(i-k)==0)//分母对分子的余数为0
                v.push_back({
    
    i*k/(i-k),i});//找到了一组满足条件的x与y
        printf("%d\n",v.size());
        for(auto&i:v)
            printf("1/%d = 1/%d + 1/%d\n",k,i.first,i.second);
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/richenyunqi/article/details/100376042