zoukankan      html  css  js  c++  java
  • [CF743C] Vladik and fractions


    Description

    Vladik and Chloe decided to determine who of them is better at math. Vladik claimed that for any positive integer (n) he can represent fraction (frac {2}{n}) as a sum of three distinct positive fractions in form (frac {1}{m}). Help Vladik with that, i.e for a given (n) find three distinct positive integers (x) , (y) and (z) such that (frac {2}{n} = frac {1}{x} + frac{1}{y} + frac {1}{z}). Because Chloe can't check Vladik's answer if the numbers are large, he asks you to print numbers not exceeding (10^{9}) . If there is no such answer, print -1.

    Input

    The single line contains single integer (n) ( (1<=n<=10^{4}) ).

    Output

    If the answer exists, print (3) distinct numbers (x) , (y) and (z) ( (1<=x,y,z<=10^{9}) , (x≠y) , (x≠z) , (y≠z) ). Otherwise print -1. If there are multiple answers, print any of them.

    Sample Input1

    3
    

    Sample Output1

    2 7 42
    

    Sample Input2

    7
    

    Sample Output2

    7 8 56
    

    Hint

    对于(100)%的数据满足(n leq 10^4),要求答案中(x,y,z leq 2* 10^{9})

    题解

    先贴一下洛谷的题目翻译

    题目描述 请找出一组合法的解使得(frac {1}{x} + frac{1}{y} + frac {1}{z} = frac {2}{n})成立,其中(x,y,z)为正整数并且互不相同

    输入 一个整数(n)

    输出 一组合法的解(x, y ,z)用空格隔开,若不存在合法的解,输出(-1)

    数据范围 对于(100)%的数据满足(n leq 10^4),要求答案中(x,y,z leq 2* 10^{9})

    看到(frac {2}{n})很容易猜想(x,y)或者(z)中有一个等于(n),那么我们先设(x=n),则有(frac{1}{y} + frac {1}{z} = frac {1}{n}),由样例二我们猜想,(y=n+1)(z=n imes(n+1)),正好有公式(frac{1}{n+1} + frac {1}{n imes(n+1)} = frac {1}{n}),所以我们可以得出一组可行解(x=n)(y=n+1)(z=n imes(n+1))

    很显然,这题有多种解,将我们的解代入样例(1),可以发现这是可行的

    但是当(n=1)时,无解

    下面给出两种证法

    1. (n=1)时,(n+1=2)(n imes(n+1)=2),与题目中的(x≠y) , (x≠z) , (y≠z)矛盾

    2. 因为(x≠y) , (x≠z) , (y≠z),且(x,y,z)都是整数,所以(x,y,z)的最小值分别为(1,2,3),此时(frac {1}{x} + frac{1}{y} + frac {1}{z} = 1 = frac {2}{2}),很显然(n≥2)时才有解

    (My~Code)

    #include<iostream>
    #include<cstdio>
    using namespace std;
    
    int main()
    {
    	int n;
    	scanf("%d",&n);
    	if(n==1) puts("-1");
    	else printf("%d %d %d
    ",n,n+1,n*n+n);
    	return 0;
    }
    

  • 相关阅读:
    shell的基本应用:vim 的基本操作
    Python 类 setattr、getattr、hasattr 的使用
    Python 安装过程和第一个Demo
    SQL SERVER 插件SQL Prompt
    SSIS etl远程部署时 无法获取服务器部署目录
    SQL SERVER SCOPE_IDENTITY函数的应用
    Oralce SQL Developer 时间格式修改
    centos 在线&&离线安装上传下载工具-lrzsz
    添加的Startup.cs启动类没有执行解决办法
    关于 X509Certificate2 程序发布IIS后找不到文件路径的问题
  • 原文地址:https://www.cnblogs.com/hihocoder/p/12568576.html
Copyright © 2011-2022 走看看