比赛 |
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;
}