记录编号 217728 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 [ZLXOI 2015]殉国 最终得分 100
用户昵称 Gravatardududu 是否通过 通过
代码语言 C++ 运行时间 0.008 s
提交时间 2016-01-05 21:35:27 内存使用 0.31 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cmath>
#define LL long long// 2 3 10
using namespace std;
LL max_oil,min_oil,cnt,t;
LL gcd(LL a,LL b,LL &x,LL &y)
{
	if(b==0)
	{
		x=1;y=0;
		return a;
	}
	else
	{
		LL dx,dy;
		LL q=gcd(b,a%b,dx,dy);
		x=dy;
		y=dx-(a/b)*dy;
		return q;
	}
}
void work()
{
	LL q,a,b,c,x,y,l,r;
	cin>>a>>b>>c;
	if(a<b)
	{
		swap(a,b);
	}
	q=gcd(a,b,x,y);
	if(c%q!=0)
	{
		cout<<-1<<" "<<-1<<endl;
		cout<<0<<endl;
		return;
	}
	LL dx=b/q,dy=a/q;
	x*=(c/q);
	y*=(c/q);
	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);
	max_oil=(x+y)+(dx-dy)*r;
	min_oil=(x+y)+(dx-dy)*l;
	cnt=r-l+1;
	if(min_oil>max_oil) swap(min_oil,max_oil);
	cout<<min_oil<<" "<<max_oil<<endl;
	cout<<cnt<<endl;	
}
int main()
{
	freopen("BlackHawk.in","r",stdin);
	freopen("BlackHawk.out","w",stdout);
	work();
	return 0;
}