题目

https://www.codechef.com/problems/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是质数
给定一个三元组,问他是不是质数

题解

CC上有自带的(英文)题解:
https://discuss.codechef.com/questions/64621/custprim-editorial
还有一篇中文翻译:
http://pan.baidu.com/s/1hqsF3Sw
翻译有遗漏之处,以原文为准。反正我就是看CC上的英文题解看懂的。
解法简直出(sang)神(xin)入(bing)化(kuang),大家还是去看原文吧……
(没错这真的是一篇解题报告)

代码

#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)解题报告相关推荐

  1. 28行代码AC——习题3-12 浮点数(UVA 11809 - Floating-Point Numbers)——解题报告

    励志用少的代码做高效的表达 题目(提交)链接→UVA-11809 算是个数学题吧,虽然在AOAPC上面给放到象征水题的第三章里面了. 这个题基本就是帮着你复习了一遍浮点数的存储方式了.浮点数在计算机里 ...

  2. 解题报告(十八)数论题目泛做(Codeforces 难度:2000 ~ 3000 + )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  3. 解题报告(二)多项式问题(多项式乘法及其各种运算)(ACM/ OI)超高质量题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  4. 解题报告:【kuangbin带你飞】专题九 连通图

    目录 A.POJ 1236 Network of Schools(有向图缩点) B.UVA 315 Network(找割点) C.UVA 796 Critical Links(桥) D.POJ 369 ...

  5. LeetCode 解题报告索引

    最近在准备找工作的算法题,刷刷LeetCode,以下是我的解题报告索引,每一题几乎都有详细的说明,供各位码农参考.根据我自己做的进度持续更新中......                        ...

  6. 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 ...

  7. 解题报告 (十三) 尺取法

    文章目录 尺取法 解题报告 PKU 2100 Graveyard Design PKU 3061 Subsequence PKU 2739 Sum of Consecutive Prime Numbe ...

  8. 2019组队赛第二场(ACM International Collegiate Programming Contest, Arabella Collegiate 解题报告 Apare_xzc

    2019组队赛第二场(ACM International Collegiate Programming Contest, Arabella Collegiate 解题报告 by xzc,zx,lj 先 ...

  9. USACO Training Section 1.3 Calf Flac 解题报告AC代码

    解题报告: 主要方法是生长法,考虑每一位的左右各有多长的回文串,输出最长的那个,比较好想--不过要注意区分字串的奇偶. 其他实现细节看代码里的注释吧-- AC代码: /* ID: yuanmz91 P ...

最新文章

  1. Java多线程-Callable和Future
  2. 【虚拟化】docker安装ElasticSearch+Kibana,下载IK分词器
  3. wxWidgets:多重继承
  4. 《数据库原理与应用》(第三版)第2章 数据模型与数据库结构 习题参考答案
  5. html head 全局变量,Javascript全局变量的使用方法
  6. c语言笔记之数组和指针(初学者)
  7. map、set和unordered_map、unordered_set对比
  8. 007 使用SpringMVC开发restful API五--异常处理
  9. 《C语言程序设计》课后习题答案(第四版)谭浩强
  10. php解析psd图层,PSD解析工具实现(七)
  11. STM32串口通信代码、ASCII码、XU4串口通信,printf只会转换为无符号类型,linux下的串口通信程序
  12. 从里面学到的关于过去的经验 前篇
  13. c语言程序设计作业心得,C语言程序设计实习心得体会
  14. SCSI的配置全攻略(ISCSI Target/initiator)
  15. 欧拉法、预估校正法(改进的欧拉法)与四阶龙格库塔法求解常微分方程的数值解C++程序
  16. 超市收银系统测试报告
  17. 使用python3爬去360图片
  18. 数据隐藏技术揭秘笔记
  19. 一次线上紧急事故的处理复盘
  20. ajax实现省市三级联动

热门文章

  1. k8s ingress and egress
  2. android照片备份软件下载,照片备份云相册app-照片备份云相册安卓版下载v1.5-乐游网安卓下载...
  3. AtomicInteger类下的incrementAndGet
  4. Flink SQL CDC 13 条生产实践经验
  5. 开源监控Prometheus介绍,安装,配置,使用详解
  6. gluster部署和使用
  7. 十一章——Trangle类
  8. 服务器电源线的分类及应用
  9. 设计模式中的撩妹神技--下篇
  10. 数组的扁平化方法总结