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

【2023次方 / B】

题目

在这里插入图片描述

思考

  • 直接快速幂,mod值恒为2023:不可以哦,不存在这个等式 a b ≡ a b m o d p ( m o d p ) a^{b} \equiv a^{b \; mod \; p} \; (mod \; p) ababmodp(modp)
  • 采用小费马定理 a p − 1 ≡ 1 ( m o d p ) , ( g c d ( a , p ) = 1 ) a^{p-1} \equiv 1 \; (mod \; p) \;,( gcd(a,p)=1) ap11(modp),(gcd(a,p)=1),很可惜还是错的,因为2023不是质数(一个质因数为17)
    • 设原式为 b 202 2 2023 m o d p b^{2022^{2023}} \; mod \; p b20222023modp
    • a 2023 ≡ 1 ⋅ a ( m o d p ) a^{2023} \equiv 1 \cdot a \; (mod \; p) a20231a(modp),原式子被化简为 b 2022 m o d p b^{2022} \; mod \; p b2022modp
    • b 2022 ≡ 1 ( m o d p ) b^{2022} \equiv 1 \; (mod \; p) b20221(modp),答案为1
  • 采用欧拉定理,很可惜需要不断嵌套,而且条件不会一直满足
    • a ϕ ( p ) ≡ 1 ( m o d p ) , g c d ( a , p ) = 1 ⇒ a b ≡ a b m o d ϕ ( p ) ( m o d p ) a^{\phi(p)} \equiv 1 \; (mod \; p) \;, gcd(a,p) = 1 \; \Rightarrow a^{b} \equiv a^{b\;mod\;\phi(p)} \; (mod \; p) aϕ(p)1(modp),gcd(a,p)=1ababmodϕ(p)(modp) 用这个
    • a b ≡ a b ( m o d p ) , b < ϕ ( p ) a^{b} \equiv a^{b} \; (mod \; p), \; b < \phi(p) abab(modp),b<ϕ(p)
    • a b ≡ a b m o d ϕ ( p ) + ϕ ( p ) ( m o d p ) , b ≥ ϕ ( p ) a^{b} \equiv a^{b\;mod \; \phi(p) + \phi(p)} \; (mod \; p), \; b \ge \phi(p) ababmodϕ(p)+ϕ(p)(modp),bϕ(p)
  • 采用周期法
    • 首先不断计算 a m o d p , a 2 m o d p . . . . . . a n m o d p a\;mod\;p,\;a^{2}\;mod\;p......a^{n}\;mod\;p amodp,a2modp......anmodp,直到出现循环,假设指数为 i i i 时出现重复
    • 则周期 T = i − 1 T = i-1 T=i1
    • 对于问题 a j m o d p a^{j}\;mod\;p ajmodp,我们可以化简指数为 j m o d T j\;mod\;T jmodT 即可,注意若值为0,则改值为T,总之就是映射到 [ 1 , T ] [1,T] [1,T] 上的某一元素

做法

  • 计算 2 i m o d 2023 , T = 408 2^{i} \;mod\; 2023 ,\;T = 408 2imod2023,T=408
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
set<LL> s;
int main()
{LL a = 2, mod = 2023;int i;LL op = a;for (i = 1;; i++){LL tmp = op % mod;if (s.count(tmp))break;elses.insert(tmp);op = (op * a) % mod; // 注意,这个求模运算不影响指数,是乘法法则的运用}int T = i - 1;cout << T;
}
  • 计算 3 i m o d 408 , T = 16 3^{i} \;mod\; 408 ,\;T = 16 3imod408,T=16
  • 计算 4 i m o d 16 = 0 4^{i} \;mod\; 16 = 0 4imod16=0 (其实不用计算,因为16是4的倍数,因此 i > = 2 i >= 2 i>=2 就可以 得到结果为 0)
  • 计算 3 16 m o d 408 = 273 3^{16} \;mod\; 408 = 273 316mod408=273
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
LL qmi(LL base, LL x, LL mod)
{LL retv = 1;while (x){if (x & 1)retv = (retv * base) % mod;base = (base * base) % mod;x >>= 1;}return retv;
}
int main()
{LL base = 3, x = 16, mod = 408;cout << qmi(base, x, mod);
}
  • 计算 2 273 m o d 2023 = 869 2^{273} \;mod\; 2023 = 869 2273mod2023=869

解释

为什么有些做法不嵌套欧拉函数,只用了一层欧拉函数也可以得到这个答案?

  • 这是因为: 2 的指数需要 ϕ ( 2023 ) \phi(2023) ϕ(2023) 来化简 (对应 以3为底数的快速幂 mod = ϕ ( 2023 ) \phi(2023) ϕ(2023),这个做到了),3 的指数需要 ϕ ( ϕ ( 2023 ) ) \phi(\phi(2023)) ϕ(ϕ(2023)),这个没做到
  • 但是如周期法所示,3的指数,以4为底的上层对答案的影响等效于令 3 的指数为 16,而 错误方法此时得到的指数是 1024, ϕ ( 2023 ) = 1632 \phi(2023) = 1632 ϕ(2023)=1632
  • 1024 m o d 1632 = 1024 1024 \mod 1632 = 1024 1024mod1632=1024 与 16 映射到周期 T = 16 T = 16 T=16 的位置一致
  • 总的来说,就是说下层一样处理,上层等效了,最狗血的是那个1024刚好是16倍数,而且没被1632影响

思考不完全对,但是答案对的示例代码

#include<bits/stdc++.h>
using namespace std;
#define int long long//欧拉函数 
int get_eular(int n){int phi=n;for(int i=2;i<=n/i;i++){if(n%i)    continue;while(n%i==0)    n/=i;phi=phi/i*(i-1);}if(n>1)    phi=phi/n*(n-1);return phi;
} //快速幂
int quick(int base, int x, int mod){int res=1;while(x){if(x&1)    res=res*base%mod;base=base*base%mod;x>>=1;}return res;
} signed main(){int a=get_eular(2023); int t=2023; for(int i=2022;i>=3;i--){t=quick(i,t,a);};t=quick(2,t,2023);cout<<t<<endl;    return 0;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 王红梅老师ppt介绍算法设计一般过程---对上周csdn的补充----可以参考老版教师用书--单链表专题在介绍插入时介绍了正向思维方法,这是更详细的解释跟全面
  • iptables和nftables
  • 淘客系统开发之卷轴模式系统源码功能分析
  • 解锁视频生成新时代! 探索智谱CogVideoX-2b:轻松生成6秒视频的详细指南
  • ReKep——李飞飞团队提出的让机器人具备空间智能:基于视觉语言模型GPT-4o和关系关键点约束
  • C语言常见字符串函数模拟实现一:(strlen,strcpy,strcat,strcmp,strstr )
  • 最新最详细的Mastercam安装包下载安装教程(保姆级)
  • Go语言的垃圾回收(GC)机制的迭代和优化历史
  • 在HTML中添加图片
  • 使用vite+react+ts+Ant Design开发后台管理项目(二)
  • 张朝阳的物理课第三卷:量子力学的硬核探索与启发
  • 网页交互模拟:模拟用户输入、点击、选择、滚动等交互操作
  • 内外网办公环境路由配置
  • 【go/方法记录】cgo静态库编译以及使用dlv定位cgo崩溃问题
  • CNN网络训练WISDM数据集:模型仿真及可视化分析
  • 【347天】每日项目总结系列085(2018.01.18)
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • hadoop集群管理系统搭建规划说明
  • JavaScript标准库系列——Math对象和Date对象(二)
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • RxJS: 简单入门
  • Webpack 4x 之路 ( 四 )
  • 给初学者:JavaScript 中数组操作注意点
  • 京东美团研发面经
  • 如何设计一个微型分布式架构?
  • 网页视频流m3u8/ts视频下载
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​2020 年大前端技术趋势解读
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • ###项目技术发展史
  • #Java第九次作业--输入输出流和文件操作
  • #Z2294. 打印树的直径
  • %@ page import=%的用法
  • (9)STL算法之逆转旋转
  • (javascript)再说document.body.scrollTop的使用问题
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (六)c52学习之旅-独立按键
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (十)T检验-第一部分
  • (四)c52学习之旅-流水LED灯
  • (一)Kafka 安全之使用 SASL 进行身份验证 —— JAAS 配置、SASL 配置
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • . NET自动找可写目录
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .NET Core 通过 Ef Core 操作 Mysql
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .Net 中Partitioner static与dynamic的性能对比
  • .stream().map与.stream().flatMap的使用
  • @RequestBody的使用
  • [ vulhub漏洞复现篇 ] Django SQL注入漏洞复现 CVE-2021-35042
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务
  • [15] 使用Opencv_CUDA 模块实现基本计算机视觉程序
  • [20161101]rman备份与数据文件变化7.txt
  • [Algorithm][综合训练][体育课测验(二)][合唱队形][宵暗的妖怪]详细讲解
  • [Android] Upload package to device fails #2720