Boastin' Red Socks

来源:互联网 发布:看gv的软件 编辑:程序博客网 时间:2024/05/16 07:26

http://acm.hust.edu.cn/vjudge/contest/view.action?cid=30506#problem/I

#include<map>#include<set>#include<list>#include<cmath>#include<ctime>#include<deque>#include<stack>#include<bitset>#include<cstdio>#include<vector>#include<cstdlib>#include<cstring>#include<iomanip>#include<numeric>#include<sstream>#include<utility>#include<iostream>#include<algorithm>#include<functional>using namespace std ;long long Gcd( long long a , long long b ){return b == 0 ? a : Gcd( b , a % b ) ;}int main(){long long p , q ; while( scanf( "%lld%lld" , &p , &q) != EOF ){if( !p && !q )break ;if( p == q ){printf( "2 0\n" ) ;continue ;}else if( p == 0 ){printf( "0 2\n" ) ;continue ;}long long gcd  = Gcd( p , q ) ;p /= gcd ;q /= gcd ;long long n , m , i ; for( i = 2 ; i <= 50000 ; ++i ){if( i * ( i - 1 ) % q == 0 ){ n = i * ( i - 1 ) / q ; m = n * p ; n = sqrt( m + 0.5 ) ;if( n * ( n + 1 ) == m && n + 1 >= 2 )break ;}} if( i > 50000 ){printf( "impossible\n" ) ;}else{printf( "%lld %lld\n" , n + 1 , i - n - 1 ) ;}}     return 0;}