UVa 10976

来源:互联网 发布:elasticsearch mysql 编辑:程序博客网 时间:2024/04/30 12:19

题目:给你一个数k,找到所有的正整数x>=y,使得1/k = 1/x + 1/y成立
这里写图片描述
分析:
这里的x,y乍一看没有范围,不知如何枚举,但仔细对已知条件进行变形就可以发现y<=2k,利用这个条件我们顺便再把x求出来就好了

#include<iostream>using namespace std;int a[100];int b[100];int main(){    int k;    cin>>k;    int count=0;    for(int y=1;y<=2*k;y++)    {        if(y-k>0)        {            if((k*y)%(y-k)==0)            {                int x=(k*y)/(y-k);                if(x>=y)                {                    a[count]=x;                    b[count]=y;//记录x,y的值,因为此时不能输出,要输入count先                     count++;                }            }        }    }    cout<<count<<endl;    for(int i=0;i<count;i++)    {        cout<<"1/"<<k<<"="<<"1/"<<a[i]<<"+1/"<<b[i]<<endl;    }    return 0; } 

结果如图:
这里写图片描述
这里写图片描述

注意:对于暴力求解问题,对问题进行一定的分析往往会使得算法更加的简便

0 0
原创粉丝点击