记录编号 |
217728 |
评测结果 |
AAAAAAAAAAAAAAAAAAAA |
题目名称 |
[ZLXOI 2015]殉国 |
最终得分 |
100 |
用户昵称 |
dududu |
是否通过 |
通过 |
代码语言 |
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;
}