#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<map>
#include<iostream>
#include<algorithm>
#include<set>
#include<vector>
#include<queue>
#include<ctime>
#include<stack>
#define PI 3.14159265358797832384626
using namespace std;
int main()
{
long long s,g,a,b;
while(~scanf("%lld%lld",&s,&g))
{
a=((s/g)-1)*g;
b=g;
if(a==0||b==0)
printf("-1\n");
else if(__gcd(a,b)==g&&a+b==s)
printf("%lld %lld\n",a,b);
else
printf("-1\n");
}
return 0;
}
A. Restoring Numbers
題意:輸入一個s和g;讓你根據 s和g 求 a和b 的值,其中a+b等於s,g=gcd(a,b),如果找不到整數a和b輸出-1;
因爲a和b都是g的倍數那麼可以寫成xg=a,yg=b,那麼(x+y)g=s;x+y=1+(x+y-1);而gcd(1*g,(x+y-1)*g)=g;當然還要排除a==0||b==0,驗證一下輸出就行了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.