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

2025十一集训——Day2做题

https://vjudge.net/contest/753101

A.

vjudge

CF

给 a、b、d,求 x 使 \(a or x\)\(b or x\) 是 d 的因数,\(a,b,d<2^{30}\),要求 \(x<2^{60}\)

考虑让 \(a or x = x\)\(b or x = x\),使 x 是 d 的倍数即可。

首先让 d 为奇数,直接右移 lowbit(d),同时 a、b 也要右移 lowbit d,但是如果 lowbit(a(或b)) < lowbit(d) 就无解(因为是或,这个1一定去不掉)。

所以 \(a or b\) 的每一个 1 的位 x 也为 1。所以拆位,如果 \(a or b\) 的该位为 1,但是我们当前的答案这位为 0,就把答案加上 \(d*2^i\),由于 \(a,b,d<2^30\),所以答案必定在范围内。

代码:

点击查看代码
#include <bits/stdc++.h>
#define dbg(x) cout << #x << '=' << x << endl
#define rep(i, l, r) for (int i = (l); i <= (r); i++)
#define frep(i, r, l) for (int i = (r); i >= (l); i--)
#define int long long
using namespace std;void work()
{int a, b, d; cin >> a >> b >> d;int num = 0; a |= b;while (!(d & 1)) num++, d >>= 1;if (a & ((1 << num) - 1)) {cout << "-1\n"; return ;}a >>= num;int k = 0;for (int i = 0; i <= 30; i++) {if (a & (1 << i) && !(k & (1 << i)))k += d << i;}cout << (k << num) << "\n";
}signed main()
{std::ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);int T = 1, opinput = 1;if (opinput) cin >> T;while (T--) work();return 0;
}

B

咕咕咕。

C

中国剩余定理板子

vjudge

洛谷

一个板子……就不写题解了,感觉很好理解……

挂个代码:

点击查看代码
#include <bits/stdc++.h>
#define dbg(x) cout << #x << '=' << x << endl
#define rep(i, l, r) for (int i = (l); i <= (r); i++)
#define frep(i, r, l) for (int i = (r); i >= (l); i--)
#define int __int128
using namespace std;const int N = 15;int n;
int a[N], b[N];void Exgcd(int a, int b, int &x, int &y) {if (a == 1 && b == 0) {x = 1, y = 0; return;}Exgcd(b, a % b, y, x);y -= a / b * x;
}int read()
{int f = 1, s = 0; char ch = getchar();while (ch < '0' || ch > '9') {if (ch == '-') f = -1; ch = getchar();}while (ch >= '0' && ch <= '9') {s = s * 10 + ch - '0'; ch = getchar();}return f * s;
}void write(int x) {if (x > 9) write(x / 10);putchar(x % 10 + '0');
}signed main()
{std::ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);n = read();int res = 1, ans = 0;rep(i, 1, n) a[i] = read(), b[i] = read(), res *= a[i];rep(i, 1, n) {int k = res / a[i];int x, y;Exgcd(k, a[i], x, y);ans = (ans + k * b[i] * x % res) % res;}ans = (ans % res + res) % res;write(ans);return 0;
}
http://www.jsqmd.com/news/7760/

相关文章:

  • 20250929给PRO-RK3566开发板在Buildroot系统下裁剪内核【已关闭摄像头ov4689为例子】 - 指南
  • 核聚变:Commonwealth Fusion Systems
  • 占个位置~
  • 详细介绍:深度学习赋能基层医疗:融合PyTorch与Django的智能医疗影像诊断平台研究
  • AI元人文系列文章:价值决策芯片——为机器安上一颗“透明的心”
  • Day007 Java方法基础
  • 30天JavaScript挑战 - 从零基础到精通的完整学习指南
  • 题解:AT_agc057_c [AGC057C] Increment or Xor
  • 占个位置
  • Spring框架常见的注解 - 实践
  • C# MVVM模式和Qt中MVC模式的比较 - 指南
  • 使用 Copilot AI + Blazor 编一个五子棋游戏
  • 关于VMware虚拟机如何下载-2025.10.3
  • RAG核心特性:ETL - 指南
  • 国庆集训做题10.1 - 10.3
  • 解码红黑树
  • 苹果首款折叠屏iPhone全爆料汇总:明年9月发布、1.3万元起步
  • 英文笔记
  • 苹果最强平板!M5版iPad Pro开箱上手提前泄露:升级12GB内存 GPU性能大涨
  • 深入解析:深入MySQL、JVM与Maven核心原理​
  • 10/3
  • 推荐一款集成AI能力的数据库管理工具
  • Advanced Computer Graphics
  • Netflix确保数亿用户观影体验的“事件”管理是如何构建与实践的?
  • 为什么词嵌入可以和位置编码相加
  • 【比赛记录】2025CSP-S模拟赛57
  • 实用指南:软件设计师——04 操作系统
  • 多模态大语言模型OISA - 详解
  • sk06.【scikit-learn基础】--『监督学习』之决策树 - 教程
  • 20251001国庆模拟