前天的题……
题目描述
话说???时期,八云紫派遣灵梦出使白玉楼,欲同白玉楼结交而
攻打月都。同时,白玉楼也欲同城管势力结交,也派出使者麻薯出
使博丽神社,可是因为白玉楼对于博丽神社的认知甚少,麻薯同样
向西出使博丽神社。一开始,灵梦从博丽神社出发,麻薯从白玉楼
出发,两人都在同一纬度线上,灵梦所处的经度为x ,麻薯所处的
经度为y ;接下来,两人同时向西走,而且只能向西走,灵梦每天
走m 公里,麻薯每天走n 公里,且每天走路的速度不变,也不停下
来休息;这样两人就在这一条长为L 的纬度线上一直向西走。问:
过了多少天之后灵梦和麻薯会碰面,并磋商两黑恶势力结交之事
(所谓碰面,是指两人处在同一经度上)。
这下,⑨犯难了,她还是个不大的少女,怎么可能做得出这么难的
题目;但是,她又是和神主谈笑风生的自机,怎么能在大酱面前丢
这么大一个面子。⑨想:不行!一定得把这个题做出来!(然后就
有了下面这段记录)
第一天,……
第二天,…………
第三天,………………
第四天,……………………
第五天,…………………………
第六天,………………………………
第七天,……………………………………!!!!!!!
啊!第七天,⑨终于打了7 个感叹号,得出了一个重要的结论!!!!!
那就是——做不出来。(汗),没办法,她只有请教你,她的姬友,帮
她解决这一难题。⑨答应你,如果你把这一题做出来了,你将得到冰冻
青蛙一万万只!$$$$$$$$-$$$$$$$$。为了改变你生活的现状——衣
衫褴褛、闻鼠起舞、蟑螂为伴,你下定了决心——我一定得把这题解决!
输入
输入只包括一行5 个整数x,y,m,n,L
其中0<x≠y < =2000000000,0 < m、n < =2000000000,0 < L <
=2100000000。
输出
输出碰面所需要的天数,如果永远不可能碰面则输出一行
标程题解是exgcd啊……
1 #include <iostream> 2 using namespace std; 3 4 long long ex_gcd(long long a, long long b, long long &x, long long &y){ 5 if (b == 0){ 6 x = 1; y = 0; return a; 7 } 8 long long d = ex_gcd(b, a % b, x, y); 9 long long t; 10 t = x; x = y; y = t - (a / b) * x; 11 return d; 12 } 13 14 int main(){ 15 freopen("kangxi.in","r",stdin); 16 freopen("kangxi.out","w",stdout); 17 long long x0, y0, m, n, l, a, b, c, x, y;; 18 cin>>x0>>y0>>m>>n>>l; 19 a = m - n; 20 b = l; 21 c = y0 - x0; 22 23 if (a < 0) 24 { 25 a = -a; c = -c; 26 } 27 long long d = ex_gcd(a, b, x, y); 28 //cout<<x<<' '<<y; 29 if (m == n || c % d != 0) cout<<"Impossible"<<endl; 30 else{ 31 b /= d; 32 c /= d; 33 long long t = c * x; 34 cout<<(t % b + b) % b<<endl; 35 } 36 37 return 0; 38 }
不过这题本来就很皮