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;
    }
    

  • 相关阅读:
    48. Rotate Image
    47. Permutations II
    46. Permutations
    45. Jump Game II
    44. Wildcard Matching
    43. Multiply Strings
    42. Trapping Rain Water
    41. First Missing Positive
    40. Combination Sum II
    39. Combination Sum
  • 原文地址:https://www.cnblogs.com/hihocoder/p/12568576.html
Copyright © 2011-2022 走看看