nyoj-66

来源:互联网 发布:windows xp sp3 纯净版 编辑:程序博客网 时间:2024/04/29 15:02

就是数学问题,边界考虑要清楚。

x,y肯定大于k.即从k+1开始寻找

x>=y. 1/k=1/x+1/y<=2/y,即y<=2*k;

x=(k*y)/(y-k)  分子y-k肯定大于等于1的,(k*y)/x=y-k>=1,即x<=k*y

分析完毕。

#include<iostream>#include<cstdio>using namespace std;int main(){    int n;    cin>>n;    while(n--)    {int k,x,y;cin>>k;for(y=k+1;y<=2*k;y++)for(x=k+1;x<=k*y;x++)if((x*y)%(x+y)==0 && (x*y)/(x+y)==k)printf("1/%d=1/%d+1/%d\n",k,x,y);    }return 0;}

  

原创粉丝点击