当前位置: 首页 > article >正文

中国剩余定理——acwing

题目:表达整数的奇怪方式

204. 表达整数的奇怪方式 - AcWing题库

分析

代码

a 与 b得最大公约数是正整数

例如:-6和3, 6和3,6和-3,都是3,都是一样的,所以不用管啥-a2,a2啥的,统统取正

#include<bits/stdc++.h>
using namespace std;

using ll = long long ;

ll exgcd(ll a, ll b, ll &x, ll &y) {
    if(!b) {
        x = 1, y = 0;
        return a;
    }
    
    ll d = exgcd(b,a%b, x, y);
    
    int t = y; y = x-(a/b)*y; x = t;
    return d;
}

int main() {
    int _;
    cin >> _;
    
    int flag = 1;
    
    ll a1, m1;
    cin >> a1 >> m1;
    _ --;
    while(_ --) {
        ll a2, m2; 
        cin >> a2 >> m2;
        
        ll k1, k2;
        ll d = exgcd(a1,a2,k1,k2);
        // exgcd无解,k1,k2无解
        if((m2-m1)%d) {
            flag = 0; break;
        }
        // 扩大 k1,k2
        k1 *= (m2-m1)/d; 
        // 最小k1
        ll t = a2/d;
        k1 = (k1%t+t)%t; // 模加模,防止模出负数,得k1最小正解
        // 更新a1, m1
        m1 = a1*k1+m1;
        a1 = abs(a1/d*a2);
    }
    
    if(flag) cout << (m1%a1+a1)%a1 << endl;
    else puts("-1");
    
    return 0;
}


http://www.kler.cn/a/417005.html

相关文章:

  • 强化学习之 PPO 算法:原理、实现与案例深度剖析
  • 【学习笔记】计算机网络(三)
  • 基于 FFmpeg 和 OpenGLES 的 iOS 视频预览和录制技术方案设计
  • 《深度学习》——pytorch框架及项目
  • 深度学习|表示学习|Instance Normalization 全面总结|26
  • (2024|Nature Medicine,生物医学 AI,BiomedGPT)面向多种生物医学任务的通用视觉-语言基础模型
  • windows中idea选择bash作为控制台指令集,但是系统环境变量未在其中生效处理
  • Vue 2.0->3.0学习笔记(Vue 3 (一)- 创建Vue3.0工程)
  • 白鹿 Hands-on:消除冷启动——基于 Amazon Lambda SnapStart 轻松打造 Serverless Web 应用(二)
  • 《FRAPPE: fast rank approximation with explainable features for tensors》中文校对版
  • 技术分析模板
  • 【rust】前端开发中的应用与前景
  • 安卓延迟自动点击
  • pcb电路板·查错、维修心得笔记
  • 深入解析 Spring MVC:架构、组件与最佳实践
  • 联想Lenovo SR650服务器硬件监控指标解读
  • osg、osgearth源码编译(二)
  • 监控视频汇聚平台:Liveweb视频监控管理平台方案详细介绍
  • PYTHON让大模型固定的返回JSON
  • 泛化调用 :在没有接口的情况下进行RPC调用
  • Windows pc端桌面便签哪个好用?桌面简洁好用的便签软件推荐
  • `console.log`调试完全指南
  • deepin 安装 chrome 浏览器
  • 【Java基础入门篇】三、面向对象和JVM底层分析(2)
  • Artec Leo:航海设备维护的便携式3D扫描利器【沪敖3D】
  • Qt入门5——常用控件3