竞赛课第九周(埃式筛法,矩阵乘法)

1.埃式筛法:求区间[2, n]内所有的素数对

【参考代码】

#include <bits/stdc++.h>
using namespace std;const int N = 1e5;
vector<int> prime;
bool visit[N];int main()
{int n;cin>>n;memset(visit, false, sizeof(visit));for(int i=2; i<=sqrt(n); i++){if(visit[i] != true) //i是素数{for(int j=i*i; j<=n; j += i) //原来是2i。优化后i*i。i=5时,2*5 3*5 4*5已经在前面i=2,3,4筛过了{visit[j] = true; //i*2,3,4,5...都不是素数}}}//通过visit数组记录素数for(int i=2; i<=n; i++){if(visit[i] != true) //i是素数{prime.push_back(i);}}for(int i=0; i<prime.size(); i+=2){cout << prime[i] << ' ' << prime[i+1] << endl;}return 0;
}

【测试结果】

2.求第一亿个Fibonacci数

 【参考代码】

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod = 1000000007;struct matrix{ll a[2][2];
};matrix start;
matrix result;//(Fn+1) = (1, 1)^n * (F1)
//(Fn  )   (1, 0)  	  (F0)//矩阵乘法
matrix matrix_multiplication(matrix matrix1, matrix matrix2)
{matrix temporary;temporary.a[0][0] = (matrix1.a[0][0] * matrix2.a[0][0] + matrix1.a[1][0] * matrix2.a[0][1]) % mod;temporary.a[0][1] = (matrix1.a[0][0] * matrix2.a[0][1] + matrix1.a[0][1] * matrix2.a[1][1]) % mod;temporary.a[1][0] = (matrix1.a[0][0] * matrix2.a[1][0] + matrix1.a[0][1] * matrix2.a[1][1]) % mod;temporary.a[1][1] = (matrix1.a[1][0] * matrix2.a[0][1] + matrix1.a[1][1] * matrix2.a[1][1]) % mod;return temporary;
}//矩阵快速幂
void fastpow(int n)
{while(n){if(n & 1) //位运算,最后一位是否为1result = matrix_multiplication(start, result);start = matrix_multiplication(start, start);n = n >> 1; //右移一位}
}int main() //计算第1亿个Fibonacci数
{int n = 1e8; //一亿start.a[0][0] = start.a[0][1] = start.a[1][0] = 1, start.a[1][1] = 0;//(1, 0)//(0, 1)result.a[0][0] = result.a[1][1] = 1, result.a[1][0] = result.a[0][1] = 0;fastpow(n);
// 	cout << result.a[0][0] % mod << endl;
// 	cout << result.a[0][1] % mod << endl;cout << result.a[1][0] % mod << endl;
// 	cout << result.a[1][1] % mod << endl;return 0;
}
//100000000
//908460138

【输出结果】

由于答案是一个极大的数,我们取最后9位输出

908460138

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/651100.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Datasophon1.2.1集成Dinky1.0.1

Dinky 下载地址: https://github.com/DataLinkDC/dinky/releases/tag/v1.0.1 Dinky 官网&#xff1a;https://www.dinky.org.cn/ 1.下载Dinky wget https://github.com/DataLinkDC/dinky/releases/download/v1.0.1/dinky-release-1.16-1.0.1.tar.gz mv dinky-release-1.16-1.…

分享8款安全监控/日志记录工具

安全监控工具的作用是实时监控和分析系统的安全状态&#xff0c;而日志记录工具的作用主要是记录系统的运行过程及异常信息。 关于安全监控工具&#xff0c;它通过对计算机系统、网络、应用程序和数据进行实时监控和分析&#xff0c;帮助发现和防止安全威胁和攻击。这种监控不…

tcp inflight 守恒算法背后的哲学

tcp inflight 守恒拥塞控制的正确性 很久以前我开始纠结 tcp 锯齿&#xff0c;很多年后我知道这叫 capacity-seeking&#xff0c;甚至说 tcp 属于 capacity-seeking protocol 的原因就是它早已深入人心的 aimd 行为&#xff0c;而该行为生成了 tcp 锯齿。 在消除锯齿&#xf…

您的计算机已被rmallox勒索病毒感染?恢复您的数据的方法在这里!

引言&#xff1a; 在当今数字化时代&#xff0c;网络安全问题日益突出&#xff0c;其中勒索病毒作为一种新型的网络威胁&#xff0c;正逐渐引起人们的广泛关注。其中&#xff0c;.rmallox勒索病毒作为近期出现的一种新型恶意软件&#xff0c;给个人和企业带来了巨大的经济损失…

Open CASCADE学习|一个点的坐标变换

gp_Trsf 类是 Open CASCADE Technology (OCCT) 软件库中的一个核心类&#xff0c;用于表示和操作三维空间中的变换。以下是该类的一些关键成员和方法的介绍&#xff1a; 成员变量&#xff1a; scale: Standard_Real 类型&#xff0c;表示变换的缩放因子。 shape: gp_TrsfFor…

利用Spring Boot后端与Vue前端技术构建现代化电商平台

作者介绍&#xff1a;✌️大厂全栈码农|毕设实战开发&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 &#x1f345;获取源码联系方式请查看文末&#x1f345; 推荐订阅精彩专栏 &#x1f447;&#x1f3fb; 避免错过下次更新 Springboot项目精选实战案例 更多项目…

【程序分享1】LAMMPS + OVITO + 晶体缺陷识别 + 点缺陷 + 分子动力学模拟

分享2个分子动力学模拟相关的程序。 1. 一种识别体心立方晶体缺陷的新方法。 2. 无后处理的分子动力学模拟中的并行点缺陷识别: lammps的计算和转储方式 。 感谢论文的原作者&#xff01; 第1个程序 关键词&#xff1a; 1. Atomistic simulations, 2. Molecular dynamics…

JSON六种值类型的写法

JSON&#xff08;JavaScript Object Notation&#xff09;是一种人类可读的文本数据格式。它源于JavaScript&#xff0c;标准开放&#xff0c;格式要求更为严格&#xff0c;独立于具体编程语言&#xff0c;常用于数据交换。 列举一段JSON数据&#xff0c;解释JSON六种值类型的…

网络安全实训Day22

网络空间安全实训-渗透测试 CSRF 定义&#xff1a;跨站伪造请求攻击 攻击者透过诱骗受害者点击攻击者提前构造的恶意链接&#xff0c;从而以受害者的身份向网站服务器发起请求&#xff0c;达到攻击的目的 通过CSRF在网站后台创建管理员 1.搭建创建管理员账号的站点 1.将对方网…

中国大模型落地应用案例集(2023)(医疗、教育、金融、科技、汽车、遥感等52个领域)

近日&#xff0c;中国信通院联合上海人工智能实验室成立的大模型测试验证与协同创新中心牵头&#xff0c;首次面向全国范围征集全行业优秀应用实践&#xff0c;并形成《2023大模型落地应用案例集》&#xff08;以下简称“《案例集》”&#xff09;。 《案例集》一共119页pdf&am…

C语言笔试题之重排链表

重排链表 实例要求 1、给定一个单链表 L 的头节点 head &#xff0c;单链表 L 表示为&#xff1a; L0 → L1 → … → Ln - 1 → Ln2、请将其重新排列后变为&#xff1a; L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → …3、不能只是单纯的改变节点内部的值&#xff0c;而是…

鸿蒙OpenHarmony【轻量系统 编译】 (基于Hi3861开发板)

编译 OpenHarmony支持hb和build.sh两种编译方式。此处介绍hb方式&#xff0c;build.sh脚本编译方式请参考[使用build.sh脚本编译源码]。 使用build.sh脚本编译源码 进入源码根目录&#xff0c;执行如下命令进行版本编译。 ./build.sh --product-name name --ccache 说明&…