首页 > 其他分享 >洛谷 P1516 青蛙的约会 题解

洛谷 P1516 青蛙的约会 题解

时间:2024-09-05 19:25:05浏览次数:5  
标签:洛谷 int 题解 P1516 青蛙 exgcd mt nt mod

一道简单的数学题~

首先分析题意。精简得出:假设跳了 \(t\) 次,那么青蛙A的坐标是 \((x+mt)\mod L\),青蛙B的坐标是 \((y+nt)\mod L\),列出方程:

\[x+mt\equiv y+nt\pmod L \]

由于余数具有可减性,所以把 \(y+nt\) 移到左边,得出:

\[x-y+mt-nt\equiv 0\pmod L \]

写成人话:

\[(x-y+mt-nt)\mod L=0 \]

由于 \(\mod L\) 等于减去非负整数个 \(L\),假设减去了 \(s\) 个 \(L\),得出:

\[x-y+mt-nt-sL=0 \]

是不是有点扩展欧几里德的味道了?接下来尝试着一些变形,容易得出:

\[(m-n)t-s\cdot L=y-x \]

如果你还没有看出来:

\[(m-n)x_0-L\cdot y_0=y-x \]

直接代入求解即可。特别的,若无解,那么 \(y-x\) 不是 \(gcd(m-n,L)\) 的倍数。

所以就可以开开猩猩的写代码辣~仅需稍微注意 \(x_0\) 为负数的情况,然后这道题就 AC 辣~

#include<bits/stdc++.h>
#define int long long
using namespace std;
int exgcd(int a,int b,int &x,int &y){
	if(b==0){
		x=1,y=0;
		return a;
	}
	int g=exgcd(b,a%b,y,x);
	y-=a/b*x;
	return g;
}
signed main(){
	//freopen("xx.in","r",stdin);
	//freopen("xx.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int x,y,m,n,L,s,t;
	cin>>x>>y>>m>>n>>L;
	int g=exgcd(m-n,L,s,t);
	if((y-x)%g!=0){
		cout<<"Impossible";
		return 0;
	}
	s*=(y-x)/g;
	cout<<(s+abs(L/g))%abs(L/g);
	return 0;
}

标签:洛谷,int,题解,P1516,青蛙,exgcd,mt,nt,mod
From: https://www.cnblogs.com/wuyiming1263/p/18399117

相关文章

  • 9.5 上午 becoder 模拟赛总结 & 题解
    T1文本编辑器说实话,看到题目的第一瞬间,我还以为gm第一道就放了平衡树。一道链表的模板题,当然愿意也可以用平衡树写,不多说了,直接放代码(100pts):#defineN1000005chars[N],t[N];intnow,pre[N],nxt[N];intmain(){scanf("%s%s",s+1,t+1);intn=strlen(s+1);......
  • 【转载】P1399 [NOI2013] 快餐店 题解
    作者%%%%%%NightTide%%%%%%题目大意求一棵基环树的重心。即一个点,使得树上到其距离最长的点到其的距离最短。注意,这个点不一定是一个节点,可以在树上的任意位置。输出树上到其距离最长的点到其的距离。或者说求基环树最短的直径?(大雾解题思路显然,这颗基环树的直径只有两......
  • [USACO13OPEN] Photo G 题解
    前言题目链接:洛谷。题意简述一个长度为\(n\)的序列,有一些位置染了色。现给出\(m\)条限制,第\(i\)条限制为\(l_i\simr_i\)中有且仅有一个位置染色。求出满足这\(m\)中条件,染色位置个数最多为多少。\(n\leq2\times10^5\),\(m\leq10^5\)。题目分析方法\(1\):差......
  • Baby Ehab Plays with Permutations 题解
    前言题目链接:Codeforces;洛谷。题意简述你有一个长度为\(n\)的序列\(p\)满足\(p_i=i\),你可以进行\(x\)次操作,每次操作找到两个不同的\(i,j\)并且交换\(p_i,p_j\),问最终有几个可能的序列。分别求出\(x=1,\ldots,k\)时的答案。\(1\len\le10^9\),\(1\lek\le......
  • 洛谷 P2860 Redundant Paths G
    洛谷P2860RedundantPathsG题意给定一张图,求最少添加几条边使得原图变为边双连通图。思路先将原图进行边双连通分量缩点,因为已经边双连通的子图我们不用考虑。缩点后会得到一棵树,每一条边都是桥。假定有\(k\)个叶子节点。我们可以把叶子节点两个两个配对连边形成环,这样......
  • Marbles 题解
    前言题目链接:Codeforces;洛谷。题意简述给定长度为\(n\)的序列\(a\),你可以交换相邻元素,请问最少交换多少次使得序列连续,即对于每种颜色,其在序列中出现的位置都是连续一段。\(m=\max\{a_i\}\leq20\),\(n\leq4\times10^5\)。题目分析对于“连续的序列”,不放看做......
  • 洛谷 P3469 BLO-Blockade
    洛谷P3469BLO-Blockade题意给定一张无向图,求每个点被封锁之后有多少个有序点对\((x,y)(x\ney,1<=x,y<=n)\)满足\(x\)无法到达\(y\)。思路使用Tarjan求出割点,有以下几种情况。当前点不是割点,答案为\(2\times(n-1)\),即该点与其他所有点不连通。当前点是割点,答案......
  • 洛谷刷题之P1046
    [NOIP2005普及组]陶陶摘苹果题目描述陶陶家的院子里有一棵苹果树,每到秋天树上就会结出101010个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个......
  • 洛谷刷题之P1009
    [NOIP1998普及组]阶乘之和题目描述用高精度计算出S=1!+2......
  • 洛谷刷题之P1226
    【模板】快速幂题目描述给你三个整数a,b,pa,b,p......