zoukankan      html  css  js  c++  java
  • CF687B Remainders Game

    题目大意

    现选定一个 (k)(x)(x) 未知,给出 (n) 个数 (c) ,可否根据 (x)(c) 之间模数得出 (x)(k)

    解题思路

    (ex) 中国剩余定理,可以知道

    我们总可以将两个同余式子

    [egin{cases}xequiv a_1(mod m_1)\xequiv a_2(mod m_2)end{cases} ]

    转化为一个式子

    [xequiv k_1m_1+a_1(mod lcm(m_1,m_2)) ]

    其中 (k_1) 为方程 (k_1m_1-k_2m_2=a_2-a_1) ​的一个解

    而易证当 (d|m) 时,且 (xmod m) 确定时 (xmod d) 也就确定了

    由此,我们只需求出所有的数之间的最小公倍数,观察k是否为这些数中任一的因数即可

    代码

    #include<iostream>
    #include<cstdio>
    #define ll long long
    
    using namespace std;
    ll n,k,tmp,x;
    
    inline int read(){
    	int x=0,f=1;
    	char ch=getchar();
    	while(!isdigit(ch)){if(ch=='-') f=-1;ch=getchar();}
    	while(isdigit(ch)){x=x*10+(ch^48);ch=getchar();}
    	return x*f;
    }
    
    ll gcd(ll m,ll n){
    	return n==0?m:gcd(n,m%n);
    }
    
    ll lcm(int x,int y){
    	return x/gcd(x,y)*y;
    }
    
    int main(){
    	n=read();k=read();
    	tmp=1;
    	for(int i=1;i<=n;i++){
    		x=read();
    		if(!tmp) continue;
    		tmp=lcm(tmp,x);
    		tmp%=k;
    	}
    	printf("%s
    ",!tmp?"Yes":"No");
    	return 0;
    }
    
  • 相关阅读:
    C语言实例解析精粹学习笔记——31
    进程调度(CFS)
    qemu中 guest与 host 网络配置
    网卡全虚拟化、virtio、vhost-net性能测试
    网桥与TAP设备
    进程调度
    中断、异常和系统调用
    文件系统
    Linux内核内存管理
    QEMU 设备模拟
  • 原文地址:https://www.cnblogs.com/jasony/p/13584326.html
Copyright © 2011-2022 走看看