• P1516 【青蛙的约会】


    真的不是我懒啊啊啊,只是人家写的太好了。

    讲的扩欧的应用,题不算难(虽然我还是不会)

    dalao

    一点小坑就是负数的替换,花姐写的很清楚了,为的是让kw+lz=s的各符号成立,还有就是最后%l/ans不是很好理解。

    实际上是找的一个素数(即b/gcd(,)与x的关系),列出了同余方程

    思路出不来时就÷gcd(a,b),同余方程转二元方程,二元方程转同余方程,拿两个右侧值相同的式子联立,然后替换替换再替换。

    #include <iostream>
    #include <cstdio>
    #define ll long long
    using namespace std;
    
    ll x,y,m,n,l;
    ll w,x1,y1,s,ans;
    
    ll exgcd(ll a,ll b,ll &x1,ll &y1){
    	if(b==0){
    		x1=1,y1=0;
    		return a;
    	}
    	ans=exgcd(b,a%b,x1,y1);
    	ll tmp=x1;x1=y1;y1=tmp-a/b*y1;
    	return ans;
    }
    
    int main(){
    	scanf("%lld%lld%lld%lld%lld",&x,&y,&m,&n,&l);
    	s=x-y,w=n-m;
    	if(w<0)	w=-w,s=-s;
    	exgcd(w,l,x1,y1);
    	if(s%ans!=0)	printf("Impossible");
    	else printf("%lld",((x1*s/ans)%(l/ans)+l/ans)%(l/ans));
    	
    	return 0;
    }
    

      

  • 相关阅读:
    day01--计算机硬件基础笔记
    22 Jun 18 Django,ORM
    21 Jun 18 Django,ORM
    20 Jun 18 复习, mysql
    20 Jun 18 Django,ORM
    19 Jun 18 复习, 正则表达式
    19 Jun 18 Django
    15 Jun 18 复习, shutil模块
    15 Jun 18 Django
    14 Jun 18 复习, form表单
  • 原文地址:https://www.cnblogs.com/jindui/p/11191955.html
Copyright © 2020-2023  润新知