[CodeChef FEB15]Payton numbers(CUSTPRIM)解题报告
题目
def multiply((a1,b1,c1), (a2,b2,c2)):
s = (a1a2 + b1b2 + c1c2) + (a1b2 + b1a2) + (c1 + c2)
t = floor[s/2] + 16(c1 + c2) - c1c2
A = (t - 2(a1b2 + b1a2) - (a1c2 + c1a2) + 33(a1 + a2)+ (b1b2 - a1a2))
B = (t - 5(a1b2 + b1a2) - (c1b2 + b1c2) + 33(b1 + b2)+ (2b1b2 + 4a1a2))
if s is even: return (A-540,B-540,24)
else: return (A-533,B-533,11)
定义zero:若x*任何y=0,则称x是zero
定义单位元,若x*任何y=y,则称x是单位元
定义质数,若x不是zero且不能分解成两个非单位元的乘积,则称x是质数
给定一个三元组,问他是不是质数
题解
代码
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
typedef long long LL;
LL realmod(LL a,LL m){a%=m;if(a<0) a+=m;return a;
}
inline LL quickmul(LL x,LL y,LL MOD){x=realmod(x,MOD),y=realmod(y,MOD);return ((x*y-(LL)(((long double)x*y+0.5)/MOD)*MOD)%MOD+MOD)%MOD;
}
LL quickpow(LL a,LL n,LL M){a=realmod(a,M);LL ans=1;while(n){if(n&1) ans=quickmul(ans,a,M);a=quickmul(a,a,M);n>>=1;}return ans;
}
LL Legendre_symbol(LL a,LL p){//p是奇素数 //1代表a是平方剩余,-1代表a不是平方剩余,0代表a=0 //a^((p-1)/2)a=realmod(a,p);LL flg=quickpow(a,(p-1)/2,p);if(flg==0||flg==1) return flg;if(flg==p-1) return -1;
}
bool Rabin_Miller(LL n,LL p){//合数返回0if(n==2) return true;if(n==1||(n&1)==0) return false;LL d=n-1;while(!(d&1)) d>>=1;LL m=quickpow(p,d,n);if(m==1) return true;while(d<n){if(m==n-1) return true;d<<=1;m=quickmul(m,m,n);}return false;
}
bool is_prime(LL n){//素数返回1if(n==0||n==1) return false;static int rm_primes[]={2,3,5,7,11,13,17,19,23,29,31};for(int i=0;i<11;i++){if(rm_primes[i]==n) return true;if(!Rabin_Miller(n,rm_primes[i])) return false;}return true;
}
bool test(LL a,LL b,LL c){LL A=33-2*a-c;LL B=b-a;if(B==0){if(A==-2||A==2) return true;if(is_prime(abs(A))){if(Legendre_symbol(-11,abs(A))==-1) return true;}return false;}else{return is_prime(A*A+A*B+3*B*B);}return false;
}
int main(void){int T;LL a,b,c;scanf("%d",&T);while(T--){scanf("%lld%lld%lld",&a,&b,&c);if(test(a,b,c)) printf("PRIME\n");else printf("NOT PRIME\n");}return 0;
}
[CodeChef FEB15]Payton numbers(CUSTPRIM)解题报告相关推荐
- 28行代码AC——习题3-12 浮点数(UVA 11809 - Floating-Point Numbers)——解题报告
励志用少的代码做高效的表达 题目(提交)链接→UVA-11809 算是个数学题吧,虽然在AOAPC上面给放到象征水题的第三章里面了. 这个题基本就是帮着你复习了一遍浮点数的存储方式了.浮点数在计算机里 ...
- 解题报告(十八)数论题目泛做(Codeforces 难度:2000 ~ 3000 + )
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...
- 解题报告(二)多项式问题(多项式乘法及其各种运算)(ACM/ OI)超高质量题解
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...
- 解题报告:【kuangbin带你飞】专题九 连通图
目录 A.POJ 1236 Network of Schools(有向图缩点) B.UVA 315 Network(找割点) C.UVA 796 Critical Links(桥) D.POJ 369 ...
- LeetCode 解题报告索引
最近在准备找工作的算法题,刷刷LeetCode,以下是我的解题报告索引,每一题几乎都有详细的说明,供各位码农参考.根据我自己做的进度持续更新中...... ...
- POJ 2054 Color a Tree解题报告
题干 Bob is very interested in the data structure of a tree. A tree is a directed graph in which a spe ...
- 解题报告 (十三) 尺取法
文章目录 尺取法 解题报告 PKU 2100 Graveyard Design PKU 3061 Subsequence PKU 2739 Sum of Consecutive Prime Numbe ...
- 2019组队赛第二场(ACM International Collegiate Programming Contest, Arabella Collegiate 解题报告 Apare_xzc
2019组队赛第二场(ACM International Collegiate Programming Contest, Arabella Collegiate 解题报告 by xzc,zx,lj 先 ...
- USACO Training Section 1.3 Calf Flac 解题报告AC代码
解题报告: 主要方法是生长法,考虑每一位的左右各有多长的回文串,输出最长的那个,比较好想--不过要注意区分字串的奇偶. 其他实现细节看代码里的注释吧-- AC代码: /* ID: yuanmz91 P ...
最新文章
- Java多线程-Callable和Future
- 【虚拟化】docker安装ElasticSearch+Kibana,下载IK分词器
- wxWidgets:多重继承
- 《数据库原理与应用》(第三版)第2章 数据模型与数据库结构 习题参考答案
- html head 全局变量,Javascript全局变量的使用方法
- c语言笔记之数组和指针(初学者)
- map、set和unordered_map、unordered_set对比
- 007 使用SpringMVC开发restful API五--异常处理
- 《C语言程序设计》课后习题答案(第四版)谭浩强
- php解析psd图层,PSD解析工具实现(七)
- STM32串口通信代码、ASCII码、XU4串口通信,printf只会转换为无符号类型,linux下的串口通信程序
- 从里面学到的关于过去的经验 前篇
- c语言程序设计作业心得,C语言程序设计实习心得体会
- SCSI的配置全攻略(ISCSI Target/initiator)
- 欧拉法、预估校正法(改进的欧拉法)与四阶龙格库塔法求解常微分方程的数值解C++程序
- 超市收银系统测试报告
- 使用python3爬去360图片
- 数据隐藏技术揭秘笔记
- 一次线上紧急事故的处理复盘
- ajax实现省市三级联动