A Restoring Numbers

版权声明:大家一起学习,欢迎转载,转载请注明出处。若有问题,欢迎纠正! https://blog.csdn.net/memory_qianxiao/article/details/79953164

A. Restoring Numbers
time limit per test
2.0 s
memory limit per test
256 MB
input
standard input
output
standard output

Pavel had two positive integers a and b. He found their sum s and greatest common divisor g, and forgot a and b after that. Help him to restore the original numbers.

Input

A single line contains two integers s and g (1 ≤ s ≤ 109, 1 ≤ g ≤ 109) — sum and greatest common divisor of the numbers a and b.

Output

If Pavel made a mistake and there are no such numbers a and b, output a single number  - 1.

Otherwise, output two positive integers a and b on a single line, separated by a space. If there are multiple possible solutions, output any of them.

Examples
input
Copy
6 2
output
Copy
4 2
input
Copy
7 2
output
Copy
-1


题意:输入是s,g,是原始的两个数的和,最大公因子。让你求原来的两个数,如果没有就输出-1.
题解:规律    刚开始想暴力的,但是学长提示了,说考思想,可以几行代码出来。后来不停的验证,模拟,发现了一个规律,输入的和减去最大公因子,如果是最大公因子的倍数就有原始的数,不然就没有。但是考虑4 4这种两个数都相等的情况,因为4-4=0,然后0%4==0的,会输出YES的,所以还要判断一下。

#include<bits/stdc++.h>
using namespace std;
int main()
{
    long long a,b,r,c;
    cin>>a>>b;
    if((a-b)%b==0&&a!=b)
        cout<<a-b<<" "<<b;
    else cout<<-1;
}


阅读更多

扫码向博主提问

Memory丿浅笑

非学,无以致疑;非问,无以广识
  • 擅长领域:
  • python
  • c++
  • 爬虫
去开通我的Chat快问
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页