A. Nastia and Nearly Good Numbers | #720 Div.2


https://codeforces.com/contest/1521/problem/A
1秒、256 MBメモリ
input :
  • t (1 ≤ t ≤ 10000)
  • A B (1 ≤ A ≤ 106, 1 ≤ B ≤ 106)
  • output :
  • For each test case print:
  • "YES"and 3 different positive integers x, y, and z (1 ≤ x, y, z ≤ 1018) such that exactly one of them is good and the other 2 are nearly good, and x+y=z.
    "NO"if no answer exists.
    「YES」を出力する場合は、異なるx、y、zがそれぞれ出力されていることを確認します.それでなければ「NO」を出力します.
    条件:
  • Nastia has 2 positive integers A and B. She defines that:
  • The integer is good if it is divisible by A⋅B;
    Otherwise, the integer is nearly good, if it is divisible by A.
    2つの正の値A、Bを受け入れます.AとBの積の値はgoodである.nearly goodに達するには、Aに分けなければなりません.
    答えたくない...ハハハハ
    初めて問題を見たとき、aとbの最大承諾数を利用して、最小の倍数から解くべきではないかと思います.そうすると、数の範囲が大きすぎて、不可能に見えます.
    私たちは彼に数学で答えを印刷させるべきだと思います.
    出力するのはx,y,zで,そのうち2つはほとんどgood,1つgoodである.一番小さいgoodに近いのを見たら、もちろんAです.
    A*Bを入力してgoodになり、Aを加えるだけで条件を満たすことができます.
    実際、質問に条件のない最小値や最大の甲の多くの答えがあれば、その中の1つを印刷してください.だから大丈夫です...
    シャベルで掘ったんだ
    import sys
    
    t = int(sys.stdin.readline())
    for i in range(t):
        a, b = map(int, sys.stdin.readline().split())
    
        if b == 1:
            print("NO")
            continue
    
        print("YES")
        print(f"{a} {a * b} {a + a * b}")
    もちろん,1が存在すると,上記の意識は成り立たない.bは1なので、aを加えるとaに分けられません.