康熙的难题(东方化改题+标程题解)

前天的题……

题目描述

话说???时期,八云紫派遣灵梦出使白玉楼,欲同白玉楼结交而

攻打月都。同时,白玉楼也欲同城管势力结交,也派出使者麻薯出

使博丽神社,可是因为白玉楼对于博丽神社的认知甚少,麻薯同样

向西出使博丽神社。一开始,灵梦从博丽神社出发,麻薯从白玉楼

出发,两人都在同一纬度线上,灵梦所处的经度为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 }

不过这题本来就很皮

原文地址:https://www.cnblogs.com/aristocrat/p/8490456.html