Comet OJ - Contest #10 C.鱼跃龙门

news/2024/11/15 3:03:25/

传送门

题意:
求最小的\(x\),满足\(\frac{x(x+1)}{2}\% n=0,n\leq 10^{12}\)
多组数据,\(T\leq 100\)

思路:

  • 直接考虑模运算似乎涉及到二次剩余什么的,但比较复杂。
  • 注意到比较特殊的就是,最后结果为\(0\),那么我们就考虑将问题转化为整除。
  • 所以式子等价于\(n|\frac{x(x+1)}{2}\)\(2n|x(x+1)\)
  • 注意到\(n\)的范围,那么我们能\((O\sqrt{n})\)来枚举\(p,q\),满足\(pq=2n\)
  • 那么就有\(pq|x(x+1)\),不妨设\(x=qb,x+1=pa\),那么就有\(pa-qb=1\),现在就相当于知道\(p,q\),求解最小的正数解\(a,b\)使得\(x\)最小。
  • 显然这是经典的扩展欧几里得问题。

因为这个题卡常,所以我们将枚举改成枚举质因子,注意一下最后质因子分解的时候也要先把素数筛出来,不然也会T。
最后扩展欧几里得得到解的时候注意一下,我们可以选择正项或负项处理,我选择的是按负项处理直接得到答案。
(这点纠结了一会儿,就是处理的时候和位置无关,按正项处理不论处理哪一个都是第一项,负项处理不论哪一个都是第二项。)

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 35, MAX = 1e6 + 5;int T;
ll n;bool chk[MAX];
int prime[MAX], tot;void pre() {for(int i = 2; i < MAX; i++) {if(!chk[i]) {chk[i] = 1;prime[++tot] = i;for(ll j = 1ll * i * i; j < MAX; j += i) {chk[j] = 1;}}}
}void exgcd(ll a, ll b, ll &x, ll &y) {if(b == 0) {x = 1, y = 0;return ;}exgcd(b,a%b,x,y);ll z = x ;x = y;y = z - y * (a / b);
}int cnt;
ll tmp[N];ll calc(ll a, ll b) {ll x, y;exgcd(a, b, x, y);y = (y % a + a) % a;if(y * b >= 0) y -= a;return -y * b;//按负项处理
}ll dfs(int num, ll a, ll b) {if(num > cnt) return calc(a, b);return min(dfs(num + 1, a * tmp[num], b), dfs(num + 1, a, b * tmp[num]));
}int main() {ios::sync_with_stdio(false); cin.tie(0);pre();cin >> T;while(T--) {cin >> n;n <<= 1;cnt = 0;for(int i = 1; i <= tot; i++) {if(prime[i] > n) break;if(n % prime[i] == 0) {tmp[++cnt] = 1;ll now = prime[i];while(n % prime[i] == 0) {tmp[cnt] *= now;n /= prime[i];}}}if(n > 1) tmp[++cnt] = n;ll ans = dfs(1, 1, 1);cout << ans << '\n';}return 0;
}

转载于:https://www.cnblogs.com/heyuhhh/p/11502960.html


http://www.ppmy.cn/news/450713.html

相关文章

power的数据库设计MySQL_使用 PowerDesigner 设计数据库 - ~~鱼跃~~ - 博客园

数据库的结构(例如表、关系、视图和触发器)称为数据库模式。可使用 SQL 语句创建这些元素并按照所需的方式进行排列&#xff0c;但是如果不使用图形工具&#xff0c;则可能会造成混淆。 PowerDesigner 提供了一种数据库结构的图形表示。只需绘制新表或输入信息&#xff0c;即可…

业绩突出的鱼跃医疗:研发费用占比较低,财报发布后大跌接近4%

10月22日&#xff0c;鱼跃医疗&#xff08;SZ:002223&#xff09;披露2020年第三季度财报。财报显示&#xff0c;该公司2020年前三季度营收48.48亿元&#xff0c;同比增长36.33%&#xff1b;净利润15.1亿元&#xff0c;同比增长111.84%。 根据财报&#xff0c;鱼跃医疗预计其2…

Comet OJ - Contest #10鱼跃龙门

题目来源&#xff1a;https://www.cometoj.com/contest/65/problem/C?problem_id3684 题意&#xff1a;求k*(k1)/2%n0的最小k。 由k与k1可以想到设置未知数&#xff1a;k1px,kqy,可列得方程&#xff1a;px-qy1&#xff0c;由此扩展欧几里得方程&#xff0c; 原方程为px*qy/…

CometOJ-[Contest #10]鱼跃龙门【exgcd】

正题 题目链接:https://cometoj.com/problem/1479 题目大意 给出 n n n求一个最小的 x ( x > 0 ) x(x>0) x(x>0)满足 ( ∑ i 1 x i ) ≡ 0 ( m o d n ) \left(\sum_{i1}^xi\right)\equiv 0(\mod n) (i1∑x​i)≡0(modn) 1 ≤ n ≤ 1 0 12 , 1 ≤ T ≤ 100 1\leq n…

【gmoj】 【扩欧】 鱼跃龙门

【gmoj】 【扩欧】 鱼跃龙门 题目 解题思路 题意 就是求1~x的和能整除n 高斯求和公式是x&#xff08;x1&#xff09;/2 也就是说x&#xff08;x1&#xff09;/2n 移项x(x1)2n 设apx1&#xff0c;bqx ap-bqgcd(a,b) 要求出最小的bq&#xff08;x&#xff09; 已知b&#xff0…

JDK 内置图形界面工具:海阔凭鱼跃,天高任鸟飞

GUI 图形界面工具,主要是 3 款:JConsole、JVisualVM、JMC。其实这三个产品可以说是 3 代不同的 JVM 分析工具。 这三个工具都支持我们分析本地 JVM 进程,或者通过 JMX 等方式连接到远程 JVM 进程。当然,图形界面工具的版本号和目标 JVM 不能差别太大,否则可能会报错。 下…

【毕业季】致毕业生的一句话:天高任鸟飞,海阔凭鱼跃

活动地址&#xff1a;毕业季进击的技术er 各位小伙伴们大家好&#xff0c;我是小曾哥&#xff0c;今天文章的主题没有技术干货&#xff0c;只有一个在校生的故事。 欢迎大家在评论区说出自己的故事&#xff0c;我先给大家抛个砖&#xff0c;希望能够引出大家的故事&#xff01;…

海阔凭鱼跃天高任鸟飞

独角兽 独角兽 独角兽 WWW.CUME.CC