news 2026/8/18 18:42:09

信息学奥赛一本通 1640:C Looooops

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
信息学奥赛一本通 1640:C Looooops

【题目链接】

ybt 1640:C Looooops
LOJ 10218. 「一本通 6.4 练习 4」C Looooops

【题目考点】

1. 线性同余方程

相关知识见 【模板】洛谷 P1082 [NOIP 2012 提高组] 同余方程

【解题思路】

在C或C++的k kk位存储系统,可以存储[ 0 , 2 k − 1 ] [0, 2^k-1][0,2k1]范围内的整数。如unsigned int类型的范围为[ 0 , 2 32 − 1 ] [0, 2^{32}-1][0,2321],unsigned long long类型的范围为[ 0 , 2 64 − 1 ] [0, 2^{64}-1][0,2641]
当变量的数值超出了该数据类型可以表示的范围,会发生“自然溢出”,变量在二进制下只会保留末k kk位,在数值角度看相当于进行了m o d 2 k \bmod 2^kmod2k操作。
for (variable = A; variable != B; variable += C)
该代码的意义为:变量初值为A,每次循环变量的值增加C,当变量的值等于B时跳出循环。
假设进行了x xx次循环,则有A + x C m o d 2 k = B A+xC \bmod 2^k = BA+xCmod2k=B
或列成同余方程A + x C ≡ B ( m o d 2 k ) A+xC\equiv B \pmod{2^k}A+xCB(mod2k)
整理得C x ≡ B − A ( m o d 2 k ) Cx\equiv B-A \pmod{2^k}CxBA(mod2k)

  • 如果g c d ( C , 2 k ) ∣ ( B − A ) gcd(C, 2^k)\mid (B-A)gcd(C,2k)(BA),则该方程有解,通过扩展欧几里得算法求线性同余方程的解。
    -如果g c d ( C , 2 k ) ∤ ( B − A ) gcd(C, 2^k)\nmid (B-A)gcd(C,2k)(BA),则该方程无解,即无论进行几次循环,变量的值都无法等于B BB,输出FOREVER。

【题解代码】

解法1:扩展欧几里得算法直接求解线性同余方程
#include<bits/stdc++.h>usingnamespacestd;#defineN25#defineMOD(a,b)(((a)%(b)+(b))%(b))typedeflonglongLL;voidexgcd(LL a,LL b,LL&x,LL&y,LL&g){if(b==0){x=1,y=0,g=a;return;}exgcd(b,a%b,y,x,g);y-=a/b*x;}intmain(){LL a,b,c,k,x,y,g;while(cin>>a>>b>>c>>k&&!(a==0&&b==0&&c==0&&k==0)){exgcd(c,1LL<<k,x,y,g);if((b-a)%g==0)cout<<MOD(x*(b-a)/g,(1LL<<k)/g)<<endl;elsecout<<"FOREVER"<<endl;}return0;}
解法2:先求乘法逆元再解线性同余方程
#include<bits/stdc++.h>usingnamespacestd;#defineN25#defineMOD(a,b)(((a)%(b)+(b))%(b))typedeflonglongLL;voidexgcd(LL a,LL b,LL&x,LL&y){if(b==0){x=1,y=0;return;}exgcd(b,a%b,y,x);y-=a/b*x;}LLgcd(LL a,LL b){if(b==0)returna;returngcd(b,a%b);}LLinv(LL a,LL m){LL x,y;exgcd(a,m,x,y);returnMOD(x,m);}intmain(){LL a,b,c,k,x,y,g;while(cin>>a>>b>>c>>k&&!(a==0&&b==0&&c==0&&k==0)){g=gcd(c,1LL<<k);if((b-a)%g==0)cout<<MOD((b-a)/g*inv(c,1LL<<k),(1LL<<k)/g)<<endl;elsecout<<"FOREVER"<<endl;}return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/18 19:09:15

Qwen3-14B技术解析:双模推理架构重塑AI应用效率格局

Qwen3-14B技术解析&#xff1a;双模推理架构重塑AI应用效率格局 【免费下载链接】Qwen3-14B-MLX-4bit 项目地址: https://ai.gitcode.com/hf_mirrors/Qwen/Qwen3-14B-MLX-4bit 阿里巴巴通义千问团队最新发布的Qwen3-14B大语言模型&#xff0c;通过革命性的双模推理架构…

作者头像 李华
网站建设 2026/8/18 22:16:21

ElasticJob云原生部署终极指南:分布式任务调度的完整解决方案

ElasticJob云原生部署终极指南&#xff1a;分布式任务调度的完整解决方案 【免费下载链接】shardingsphere-elasticjob 项目地址: https://gitcode.com/gh_mirrors/shar/shardingsphere-elasticjob 在当今云原生技术快速发展的背景下&#xff0c;如何将分布式任务调度框…

作者头像 李华
网站建设 2026/8/18 0:27:50

终极iOS评论系统:5大核心功能深度解析与实战指南

终极iOS评论系统&#xff1a;5大核心功能深度解析与实战指南 【免费下载链接】iOSProject iOS project of collected some demos for iOS App, use Objective-C 项目地址: https://gitcode.com/gh_mirrors/io/iOSProject 在移动应用开发中&#xff0c;评论系统是用户互动…

作者头像 李华
网站建设 2026/8/18 14:14:46

1811种语言+全合规架构:Apertus-8B如何重新定义开源大模型标准

1811种语言全合规架构&#xff1a;Apertus-8B如何重新定义开源大模型标准 【免费下载链接】Apertus-8B-Instruct-2509 项目地址: https://ai.gitcode.com/hf_mirrors/unsloth/Apertus-8B-Instruct-2509 导语 瑞士国家AI研究所推出的Apertus-8B大模型&#xff0c;以181…

作者头像 李华
网站建设 2026/8/18 20:13:40

ERNIE 4.5-VL-424B-A47B:百度异构MoE架构重塑多模态大模型效率边界

ERNIE 4.5-VL-424B-A47B&#xff1a;百度异构MoE架构重塑多模态大模型效率边界 【免费下载链接】ERNIE-4.5-VL-424B-A47B-PT 项目地址: https://ai.gitcode.com/hf_mirrors/baidu/ERNIE-4.5-VL-424B-A47B-PT 导语 百度ERNIE 4.5-VL-424B-A47B多模态大模型凭借4240亿总…

作者头像 李华