尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

同余方程组、拓展中国剩余定理 excrt

同余方程组、拓展中国剩余定理 excrt
📅 发布时间:2026/6/20 8:16:37

同余方程组、拓展中国剩余定理 excrt

公式:\(x \equiv b_i(\bmod\ a_i)\) ,即 \((x - b_i) \mid a_i\) 。

int n; LL ai[maxn], bi[maxn];
inline int mypow(int n, int k, int p) {int r = 1;for (; k; k >>= 1, n = n * n % p)if (k & 1) r = r * n % p;return r;
}
LL exgcd(LL a, LL b, LL &x, LL &y) {if (b == 0) { x = 1, y = 0; return a; }LL gcd = exgcd(b, a % b, x, y), tp = x;x = y, y = tp - a / b * y;return gcd;
}
LL excrt() {LL x, y, k;LL M = bi[1], ans = ai[1];for (int i = 2; i <= n; ++ i) {LL a = M, b = bi[i], c = (ai[i] - ans % b + b) % b;LL gcd = exgcd(a, b, x, y), bg = b / gcd;if (c % gcd != 0) return -1;x = mul(x, c / gcd, bg);ans += x * M;M *= bg;ans = (ans % M + M) % M;}return (ans % M + M) % M;
}
int main() {cin >> n;for (int i = 1; i <= n; ++ i) cin >> bi[i] >> ai[i];cout << excrt() << endl;return 0;
}

求解连续按位异或

以 \(\mathcal O(1)\) 复杂度计算 \(0\oplus1\oplus\dots\oplus n\) 。

unsigned xor_n(unsigned n) {unsigned t = n & 3;if (t & 1) return t / 2u ^ 1;return t / 2u ^ n;
}
i64 xor_n(i64 n) {if (n % 4 == 1) return 1;else if (n % 4 == 2) return n + 1;else if (n % 4 == 3) return 0;else return n;
}

高斯消元求解线性方程组

题目大意:输入一个包含 \(N\) 个方程 \(N\) 个未知数的线性方程组,系数与常数均为实数(两位小数)。求解这个方程组。如果存在唯一解,则输出所有 \(N\) 个未知数的解,结果保留两位小数。如果无数解,则输出 \(\tt{}X\) ,如果无解,则输出 \(\tt{}N\) 。

const int N = 110;
const double eps = 1e-8;
LL n;
double a[N][N];
LL gauss(){LL c, r;for (c = 0, r = 0; c < n; c ++ ){LL t = r;for (int i = r; i < n; i ++ )    //找到绝对值最大的行 if (fabs(a[i][c]) > fabs(a[t][c]))t = i;if (fabs(a[t][c]) < eps) continue;for (int j = c; j < n + 1; j ++ ) swap(a[t][j], a[r][j]);    //将绝对值最大的一行换到最顶端for (int j = n; j >= c; j -- ) a[r][j] /= a[r][c];    //将当前行首位变成 1for (int i = r + 1; i < n; i ++ )    //将下面列消成 0 if (fabs(a[i][c]) > eps)for (int j = n; j >= c; j -- )a[i][j] -= a[r][j] * a[i][c];r ++ ;}if (r < n){for (int i = r; i < n; i ++ )if (fabs(a[i][n]) > eps)return 2;return 1;}for (int i = n - 1; i >= 0; i -- )for (int j = i + 1; j < n; j ++ )a[i][n] -= a[i][j] * a[j][n];return 0;
}
int main(){cin >> n;for (int i = 0; i < n; i ++ )for (int j = 0; j < n + 1; j ++ )cin >> a[i][j];LL t = gauss();if (t == 0){for (int i = 0; i < n; i ++ ){if (fabs(a[i][n]) < eps) a[i][n] = abs(a[i][n]);printf("%.2lf\n", a[i][n]);}}else if (t == 1) cout << "Infinite group solutions\n";else cout << "No solution\n";return 0;
}

相关新闻

  • Apache POI 在 Linux 无图形界面环境下因字体配置问题导致Excel导出失败的解决方案 - 详解
  • 扩展欧几里得 exgcd
  • 防爆模乘

最新新闻

  • 2026永州汽车贴膜门店实力排行 - 国麟测评
  • 金得力环保:木百叶定制品牌中的靠谱之选 - mypinpai
  • 2026黑龙江哈尔滨红肠哪家正宗?四家优质品牌总结 - 最新行业资讯
  • 深入解析CAN控制器:从寄存器位到消息调度与滤波机制
  • Siri要接入AI了,苹果手机上一句话让GPT写文案、DeepSeek写代码的时刻来了
  • 从M68HC11E实战解析8位MCU架构:寄存器、外设与低功耗设计

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号