• UVA


    题目描述

    现在输入一个正整数k,找到所有的正整数x>=y,使得1/k=1/x+1/y.

    输入

    第一行输入一个整数n,代表有n组测试数据。
    接下来n行每行输入一个正整数k

    输出

    按顺序输出对应每行的k找到所有满足条件1/k=1/x+1/y的组合

    思路:找出所有x,y,所以要枚举x,y。、

    但是没有x,y的范围啊,又不能一直枚举下去的

    依据题目给的几组数据关系 1/x<=1/y, 1/k=1/x+1/y

    故1/K-1/Y<=I/Y即y<=2k

    又x=a*y/(y-k)

    只需在k~2k之间枚举y计算x即可

    #include<cstdio>
    using namespace std;
    int main(){
        int a,y,an[1000],bn[1000];
        while(scanf("%d",&a)!=EOF){
            int cnt=0;
          for(y=a+1;y<=2*a;y++)
            if(a*y%(y-a)==0){
                an[cnt]=a*y/(y-a);
                bn[cnt++]=y;
            }
            printf("%d
    ",cnt);
          for(int i=0;i<cnt;i++)
            printf("1/%d = 1/%d + 1/%d
    ",a,an[i],bn[i]);        
        }
        return 0;
    }
  • 相关阅读:
    luogu P1451 求细胞数量
    P1443 马的遍历
    luogu P1194 买礼物
    codevs 4919 线段树练习4
    printf的实型
    printf的整型
    scanf
    printf
    c++常用函数
    字符类型C++(ascll码表)
  • 原文地址:https://www.cnblogs.com/-ifrush/p/10298259.html
Copyright © 2020-2023  润新知