C

来源:互联网 发布:网络系统工程师简历 编辑:程序博客网 时间:2024/05/18 03:03

题目:给你一个数k,求所有使得1/k = 1/x + 1/y成立的x≥y的整数对。

分析:数论,枚举。枚举所有在区间(k+1,2k)上的y即可,当1/k - 1/y的结果分子为1即为一组解。

#include<bits/stdc++.h>using namespace std;int x[1100];int y[1100];int main(){    int n;    while(~scanf("%d", &n))    {      int cc = 0;      for(int i = 1 + n; i <= 2 * n; i++)      {         if(n * i % ( i - n) == 0)         {             x[cc] = n * i/( i - n);             y[cc++]  = i;         }      }      printf("%d\n",cc);      //printf("%d\n",cc);      for(int i = 0; i < cc; i++)        printf("1/%d = 1/%d + 1/%d\n",n,x[i],y[i]);    }}


0 0