计蒜客 25985.Goldbach-米勒拉宾素数判定(大素数) (2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 B)...
若干年之前的一道题,当时能写出来还是超级开心的,虽然是个板子题。一直忘记写博客,备忘一下。
米勒拉判大素数,关于米勒拉宾是个什么东西,传送门了解一下:biubiubiu~
B. Goldbach
题目传送门
自己看题意吧,直接贴代码了。
代码:
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 #include<cstdlib> 6 #include<algorithm> 7 #include<queue> 8 #include<vector> 9 #include<stack> 10 using namespace std; 11 typedef unsigned long long ll; 12 const int maxn=1e9+10; 13 const double eps=1e-7; 14 ll add_mod(ll a,ll b,ll mod) //快乘法 基于快速幂的二分思想 15 { 16 ll ans=0; //由于考虑到取模数很大 快速幂会溢出 17 while(b) //必须使用该方法 18 { 19 if(b&1) //我这里写的是非递归版 20 ans=(ans+a)%mod; 21 a=a*2%mod; 22 b>>=1; 23 } 24 return ans; 25 } 26 27 ll pow_mod(ll a,ll n,ll mod) //快速幂 递归版 28 { 29 if(n>1) 30 { 31 ll tmp=pow_mod(a,n>>1,mod)%mod; 32 tmp=add_mod(tmp,tmp,mod); 33 if(n&1) tmp=add_mod(tmp,a,mod); 34 return tmp; 35 } 36 return a; 37 } 38 39 bool Miller_Rabbin(ll n,ll a) //米勒拉宾素数判断函数主体 40 { 41 ll d=n-1,s=0,i; 42 while(!(d&1)) // 先把(2^s)*d 算出来 43 { 44 d>>=1; 45 s++; 46 } 47 ll t=pow_mod(a,d,n); //a^d取一次余判断 48 if(t==1 || t==-1) //一或负一则可以声明这可能是质数 49 return 1; 50 for(i=0; i<s; i++) //不是的话继续乘上s个2 51 { 52 if(t==n-1) //(n-1)*(n-1)%n=1 这一步是优化 53 return 1; 54 t=add_mod(t,t,n); // 快乘 55 } 56 return 0; 57 } 58 59 int is_prime(ll n) 60 { 61 ll i,tab[4]= {3,4,7,11}; //本来应该取[1,n]内任意整数 62 for(i=0; i<4; i++) //但一般这几个数足以,不需要太多组测试 63 { 64 if(n==tab[i]) 65 return 1; //小判断小优化~ 66 if(!n%tab[i]) 67 return 0; 68 if(n>tab[i] && !Miller_Rabbin(n,tab[i])) 69 return 0; 70 } 71 return 1; 72 } 73 ll max(ll a,ll b) 74 { 75 return a>b?a:b; 76 } 77 int main() 78 { 79 int t; 80 scanf("%d",&t); 81 while(t--) 82 { 83 ll n; 84 scanf("%llu",&n); 85 if(n==4) 86 printf("2 2\n"); 87 else 88 { 89 for(ll i=2; i<=n/2; ++i) 90 { 91 if(is_prime(i)&&is_prime(n-i)) 92 { 93 printf("%llu %llu\n",i,n-i); 94 break; 95 } 96 } 97 } 98 } 99 }
当时还是我队友帮我D的bug,他现在都不理我了((ಥ_ಥ))
难受
转载于:https://www.cnblogs.com/ZERO-/p/9279891.html
计蒜客 25985.Goldbach-米勒拉宾素数判定(大素数) (2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 B)...相关推荐
- 【Java/补题/牛客/ACM赛制】2021年ICPC国际大学生程序设计竞赛暨陕西省第九届大学生程序设计竞赛(正式赛)
文章目录 题目链接 知识一览 题目列表 快输 C - GCD(数论分块) 题目链接 2021年ICPC国际大学生程序设计竞赛暨陕西省第九届大学生程序设计竞赛(正式赛) 知识一览 01-数论分块 题目列 ...
- 计蒜客网站 ACM-ICPC亚洲区赛题
The Preliminary Contest for ICPC China Nanchang National Invitational(2019) ACM-ICPC Jiaozuo Onsite ...
- 2018宁夏网络赛 B Goldbach (米勒拉宾素数测试)
2018宁夏网络赛 B Goldbach (米勒拉宾素数测试) 题目链接 题目大意: 给你一个偶数n (2<n<=1e18) 让你把n分解成两个素数的和.(如果有多个输出任意一个) 解题思 ...
- 米勒-拉宾(MillerRabbin)素性测试算法
原创滴博客~https://www.cnblogs.com/precious-ZPF/p/9481599.html 小编赶紧摘过来的,多看几遍向银家多学习学习QAQ 首先,在了解米勒-拉宾素性测试之前 ...
- 数论 判断素数:普通素数判别 线性筛 二次筛法求素数 米勒拉宾素数检验
普通的素数判断法 当我们要判断一个数字是否是素数的时候,往往会直接看这个数字模1到这个数字的根号,看有没有等于零的,从而判断这个数字是不是素数,这样做的时间复杂度为O(sqrt(n)) bool is ...
- 计蒜客 挑战难题 爬楼梯
计蒜客 挑战难题 爬楼梯 假设你现在正在爬楼梯,楼梯有n级.每次你只能爬1级或者2级,那么你有多少种方法爬到楼梯的顶部? 格式: 第一行输入一个数n(n<=50),代表楼梯的级数. 接下来一行输 ...
- 无脑博士的试管们java_计蒜客 无脑博士和他的试管们
标签: 无脑博士有三个容量分别是A,B,C升的试管,A,B,C分别是三个从1到20的整数,最初,A和B试管都是空的,而C试管是装满硫酸铜溶液的.有时,无脑博士把硫酸铜溶液从一个试管倒到另一个试管中,直 ...
- 费马素性测试和米勒—拉宾素性测试
chapter 1 Fermat's little theorem 费马小定理 费马小定理说的是:如果p是一个素数,那么对于任意一个整数a,a p − a 能被p整除,也可以用模运算表示如下: (p是 ...
- 最短路(遍历边)计蒜客—DD坐地铁
题目: C 城有 n 个站点, m 条双向地铁,每条地铁有一个 companyicompany_icompanyi表示它的公司,如果连续乘坐同一家公司的地铁只要花 1元钱就好.DD现在想出门找萨摩耶 ...
- K - Triangle 计蒜客 - 42405
K - Triangle 计蒜客 - 42405 题意: 给你一个三角形的三点,再给你三角形边上一个点,让你求另一个点(也要在三角形上),使得平分三角形的面积 题解: 计算几何 三角形的三边ab,ac ...
最新文章
- ajax传递复杂参数
- gin自定义日志格式
- mysql 5.7源码包安装教程_MYSQL5.7源码包编译安装
- 【theano-windows】学习笔记十六——深度信念网络DBN
- php使用accdb,php如何连接access2007的accdb格式数据库文件?
- 交流信号叠加直流偏置_放大器偏置电流Ib需要完整的直流回路
- leetcode —— 19. 删除链表的倒数第N个节点
- 华为服务器报错信息,厂商 push 不通排查指南
- python 非线性规划_支持向量机:Stata 和 Python 实现
- android UI进阶之仿iphone的tab效果
- s1200 博图高速脉冲计数值没有变化_如何实现SIMATIC S7-1200的高速计数器(HSC)软件门控制?...
- git恢复已删除的本地分支
- 批量下载CMIP6数据
- OpenCascade Primitives BRep-Torus
- ISIS Neighbor Net Type DIS
- Revit二开--批量修改视图范围(revit宏)
- 技术状态管理(五)-技术状态记实
- Miller-Rabin素数检测算法笔记
- 读 Dov M. Gabbay 之 Handbook of the History of Logic. Volume 1: Greek, Indian and Arabic Logic
- 【Pytorch Lighting】第 10 章:扩展和管理培训
热门文章
- mysql的执行局计划
- Linux tty远程退出,screen 如果程序没结束就退出远程管理终端
- 装箱拆箱的意义 java_Java中的装箱和拆箱深入理解
- java enum private_初步理解Java枚举类型
- Process finished with exit code 1
- 小D课堂 - 零基础入门SpringBoot2.X到实战_第8节 数据库操作之整合Mybaties和事务讲解_32..SpringBoot2.x持久化数据方式介绍...
- docker-compose.yml(2)
- cpu的用户态和内核态和内存的用户空间内核空间
- opencart修改网站顶部电话联系方式
- centos下编译安装Openssl