比赛 ZLXOI2015Day1 评测结果 AAAAAWAAAAWAAWWWWAWW
题目名称 殉国 最终得分 60
用户昵称 mikumikumi 运行时间 0.005 s
代码语言 C++ 内存使用 0.32 MiB
提交时间 2015-10-29 11:02:17
显示代码纯文本
#include<cstdio>
#include<iostream>
using namespace std;
int a,b,c,G;
void read()
{
	scanf("%d%d%d",&a,&b,&c);
}
class miku
{
public:
	int x,y;
};
miku gcd(int x,int y)
{
	miku tem;
	if(y==0)
	{
		tem.x=1,tem.y=0;
		G=x;
		return tem;
	}
	miku now=gcd(y,x%y);
	tem.x=now.y;
	tem.y=now.x-(x/y)*now.y;
	return tem;
}
int na,nb;
miku sp;
bool check()
{
	if(sp.x<0) 
	{
		int k=(0-sp.x-1)/nb+1;
		sp.x+=k*nb;
		sp.y-=k*na;
		if(sp.y<0) return 0;
	}
	return 1;
}
void work()
{
	sp=gcd(a,b);
	int k=c/G;
	sp.x*=k;sp.y*=k;
	na=a/G,nb=b/G;
	if(sp.x>sp.y)
	{
		swap(sp.x,sp.y);
		swap(na,nb);
	}
	if(!check()||c%G!=0)
	{
		printf("-1 -1\n");
		printf("0");
		return;
	}
	int mi=0,ma=0;
	if(nb>na) mi=sp.x+sp.y;
	else ma=sp.x+sp.y;
	int ans=sp.y/na;
	sp.x+=ans*nb;
	sp.y-=ans*na;
	ans++;
	if(mi==0) mi=sp.x+sp.y;
	else ma=sp.x+sp.y;
	printf("%d %d\n",mi,ma);
	printf("%d",ans);
	//cout<<ans<<endl;
}
int main()
{
	freopen("BlackHawk.in","r",stdin);
	freopen("BlackHawk.out","w",stdout);
	read();
	work();
	return 0;
}