比赛 防止浮躁的小练习v0.9 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 殉国 最终得分 100
用户昵称 Hexฏ๎๎๎๎๎๎๎๎๎ۣۣۣ 运行时间 0.050 s
代码语言 C++ 内存使用 0.27 MiB
提交时间 2016-11-07 09:44:22
显示代码纯文本
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>

using namespace std;

long long a,b,c;

long long gcd(long long a,long long b,long long &x,long long &y){
	if( !b )
	  {
	  	x=1;
		y=0;
	  	return a;
	  }
	  
	else
	  {
//	  	cout<<"233  "<<b<<endl;
	    long long dx,dy;
		long long q=gcd(b,a%b,dx,dy);
		x=dy;
		y=dx-(a/b)*dy;
		return q;
	  }
}

int main(int argc,char ** argv){
	freopen("BlackHawk.in","r",stdin);
	freopen("BlackHawk.out","w",stdout);
	scanf("%lld %lld %lld",&a,&b,&c);
	long long i,j,k,x,y,l,r,d;
	bool f=false;
//	if( ( ( a > c || a == 0 ) && b != 0 && b < c && c%b != 0 ) || ( a < c && a != 0 && ( b > c || b == 0 ) && c%a != 0 ) || ( a > c && b > c ) || ( a == 0 && b == 0  ) || c == 0 )
//	  /{
//	  	printf("-1 -1\n0");
//	  	return 0;
//	  }
	  
	if( b > a )
	  swap(a,b);  
	
	d=gcd(a,b,x,y);
//	cout<<d<<" "<<x<<" "<<y<<endl;
	
	if( c%d )
	  {
	  	printf("-1 -1\n0");
	  	return 0;
	  }
	
	x*=(c/d);
	y*=(c/d);
	
	long long dx=b/d,dy=a/d,Max,Min,ans;
//	cout<<x<<" "<<y<<" "<<dx<<" "<<dy<<endl;	
	if( x%dx == 0 ) l=-x/dx;
	else {
	  if( -x/dx < 0 )
	    l=-x/dx;
	  else
	    l=-x/dx+1;
	  
	}
	if( y%dy == 0 ) r=y/dy;
	else
	  {
	  	if( y/dy < 0 )
	  	  r=y/dy-1;
	  	else
	  	  r=y/dy;
	  }
	if( r < l )
	  swap(l,r);
	  
//	cout<<l<<" "<<r<<endl;  
	  
	Max=(x+y)+(dx-dy)*r;
	Min=(x+y)+(dx-dy)*l;
	ans=r-l+1;
	if( Min > Max )
	  swap(Min,Max);
	cout<<Min<<" "<<Max<<endl<<ans<<endl;
//	printf("%d %d\n%d",Min,Max,ans);
	return 0;
}