计蒜客 25985.Goldbach-米勒拉宾素数判定(大素数) (2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 B)
若干年之前的一道题,当时能写出来还是超级开心的,虽然是个板子题。一直忘记写博客,备忘一下。
米勒拉判大素数,关于米勒拉宾是个什么东西,传送门了解一下:biubiubiu~
B. Goldbach
自己看题意吧,直接贴代码了。
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<algorithm>
#include<queue>
#include<vector>
#include<stack>
using namespace std;
typedef unsigned long long ll;
const int maxn=1e9+;
const double eps=1e-;
ll add_mod(ll a,ll b,ll mod) //快乘法 基于快速幂的二分思想
{
ll ans=; //由于考虑到取模数很大 快速幂会溢出
while(b) //必须使用该方法
{
if(b&) //我这里写的是非递归版
ans=(ans+a)%mod;
a=a*%mod;
b>>=;
}
return ans;
} ll pow_mod(ll a,ll n,ll mod) //快速幂 递归版
{
if(n>)
{
ll tmp=pow_mod(a,n>>,mod)%mod;
tmp=add_mod(tmp,tmp,mod);
if(n&) tmp=add_mod(tmp,a,mod);
return tmp;
}
return a;
} bool Miller_Rabbin(ll n,ll a) //米勒拉宾素数判断函数主体
{
ll d=n-,s=,i;
while(!(d&)) // 先把(2^s)*d 算出来
{
d>>=;
s++;
}
ll t=pow_mod(a,d,n); //a^d取一次余判断
if(t== || t==-) //一或负一则可以声明这可能是质数
return ;
for(i=; i<s; i++) //不是的话继续乘上s个2
{
if(t==n-) //(n-1)*(n-1)%n=1 这一步是优化
return ;
t=add_mod(t,t,n); // 快乘
}
return ;
} int is_prime(ll n)
{
ll i,tab[]= {,,,}; //本来应该取[1,n]内任意整数
for(i=; i<; i++) //但一般这几个数足以,不需要太多组测试
{
if(n==tab[i])
return ; //小判断小优化~
if(!n%tab[i])
return ;
if(n>tab[i] && !Miller_Rabbin(n,tab[i]))
return ;
}
return ;
}
ll max(ll a,ll b)
{
return a>b?a:b;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
ll n;
scanf("%llu",&n);
if(n==)
printf("2 2\n");
else
{
for(ll i=; i<=n/; ++i)
{
if(is_prime(i)&&is_prime(n-i))
{
printf("%llu %llu\n",i,n-i);
break;
}
}
}
}
}
当时还是我队友帮我D的bug,他现在都不理我了((ಥ_ಥ))
难受
计蒜客 25985.Goldbach-米勒拉宾素数判定(大素数) (2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 B)的更多相关文章
- HDU6237-A Simple Stone Game-找素因子(欧拉函数)-2017中国大学生程序设计竞赛-哈尔滨站-重现赛
A Simple Stone Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Ot ...
- HDU 6237.A Simple Stone Game-欧拉函数找素因子 (2017中国大学生程序设计竞赛-哈尔滨站-重现赛)
A Simple Stone Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Ot ...
- 计蒜客 30990.An Olympian Math Problem-数学公式题 (ACM-ICPC 2018 南京赛区网络预赛 A)
A. An Olympian Math Problem 54.28% 1000ms 65536K Alice, a student of grade 66, is thinking about a ...
- 计蒜客 39279.Swap-打表找规律 (The 2019 ACM-ICPC China Shannxi Provincial Programming Contest L.) 2019ICPC西安邀请赛现场赛重现赛
Swap There is a sequence of numbers of length nn, and each number in the sequence is different. Ther ...
- 计蒜客 Zoning Houses(线段树区间最大次大)
Given a registry of all houses in your state or province, you would like to know the minimum size of ...
- 计蒜客 18492.Upside down primes-米勒拉宾判大素数 (German Collegiate Programming Contest 2015 ACM-ICPC Asia Training League 暑假第一阶段第三场 K)
K. Upside down primes 传送门 这个题就是把大数按字符串输进去,判断一下是不是素数,然后反转180度,先判断反转之后的东西是不是一个数,如果是的话,再把这个数判一下是不是素数,如果 ...
- 计蒜客 28449.算个欧拉函数给大家助助兴-大数的因子个数 (HDU5649.DZY Loves Sorting) ( ACM训练联盟周赛 G)
ACM训练联盟周赛 这一场有几个数据结构的题,但是自己太菜,不会树套树,带插入的区间第K小-替罪羊套函数式线段树, 先立个flag,BZOJ3065: 带插入区间K小值 计蒜客 Zeratul与Xor ...
- 计蒜客 18487.Divisions-大数的所有因子个数-Miller_Rabin+Pollard_rho-超快的(大数质因解+因子个数求解公式) (German Collegiate Programming Contest 2015 ACM-ICPC Asia Training League 暑假第一阶段第三场 F)
这一场两个和大数有关的题目,都用到了米勒拉宾算法,有点东西,备忘一下. 题目传送门 F. Divisions 传送门 这个题是求一个数的所有因子个数,但是数据比较大,1e18,所以是大数的题目,正常的 ...
- HDU2138 & 米勒拉宾模板
题意: 给出n个数,判断它是不是素数. SOL: 米勒拉宾裸题,思想方法略懂,并不能完全理解,所以实现只能靠背模板.... 好在不是很长... Code: /*==================== ...
随机推荐
- Python学习-day20 django进阶篇
Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行 ...
- 孤荷凌寒自学python第四天 安装python的其它IDE环境
孤荷凌寒自学python第四天 安装python的其它IDE环境 (完整学习过程屏幕记录视频地址在文末) 因为是完全的新手,对python环境搭建完全一无所知,因此,可真是大费周章才配置了其它多个Id ...
- 2 28TOP100
import json import requests from requests.exceptions import RequestException import re import time d ...
- 调整CodeIgniter错误报告级别
修改位置:CI根目录 index.php 为开发环境与生产环境定义错误报告级别 if (defined('ENVIRONMENT')) { switch (ENVIRONMENT) { case 'd ...
- 深入理解css之absolute
在慕课网上看到的张鑫旭大神的视频,做的笔记,以便日后翻看. 绝对定位与float 1.绝对定位和float有一样的特性,都有包裹性,和破坏性. 2.absolute和relative 如果不把他们俩放 ...
- 01、JAVA开发准备
一.首先要认识几个名词: 1. JRE(Java Runtime Environment ,JAVA运行环境):它包含Java虚拟机(JVM,Java Virtual Machine)和Java程序所 ...
- 【Android】实验8 SQLite数据库操作2016.5.12
实验8 SQLite数据库操作 [目的] 设计一个个人通讯录,掌握Android平台下的数据库开发,该个人通讯录主要包括联系人列表和联系人详细信息等界面. [要求] 程序主界面是通讯录的目录显示手机 ...
- OpenNI2安装
1.Openni2:从官网下载linux用zip压缩包,解压再解压2.终端转到解压目录下,找到install.sh文件,执行$sudo ./install.sh 3.执行后,生成OpenNIDevEn ...
- template.js 模板引擎
例子: html代码: <div id="box"></div> css代码: table{ border-collapse: collapse; text ...
- 从Jetty、Tomcat和Mina中提炼NIO构架网络服务器的经典模式
如何正确使用NIO来构架网络服务器一直是最近思考的一个问题,于是乎分析了一下Jetty.Tomcat和Mina有关NIO的源码,发现大伙都基于类似的方式,我感觉这应该算是NIO构架网络服务器的经典模式 ...