比赛 |
防止浮躁的小练习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;
}