JZOJ.5325【NOIP2017模拟8.21】九九归一

Description

 

Input

Output

 

Sample Input

7 3
5 2 0

Sample Output

100
 

Data Constraint

好霸气的题目名

对于φ(n)我们可以线性求出来,然后先判断qφ(n)mod n的意义下是否等于1,是的话再对φ(n)进行因数分解,看看它的因子a是否满足qamod n的意义下是否等于1,若都不等于1则这个数字就是神奇的。

一般而言这个φ(n)的因数并不多。

复制代码
 1 #include <cstring>
 2 #include <cstdio>
 3 #include <iostream>
 4 #include <cmath>
 5 #include <cstdlib>
 6 #define N 10000005
 7 using namespace std;
 8 long long p;
 9 long long n,q,fai,a,yin[N],top;
10 bool qwq;
11 long long read(){
12     long long x=0,w=1;
13     char c=0;
14     for (c=getchar();c<'0'||c>'9';c=getchar()) {if (c=='-') w=-1;}
15     for (;c>='0'&&c<='9';c=getchar()) x=(x<<3)+(x<<1)+c-'0';
16     return x*w;
17 }
18 long long getfai(){
19     long long qwq=n,a=n;
20     for (long long i=2;i*i<=a;++i)
21         if (a%i==0){
22             qwq=qwq/i*(i-1);
23             while (a%i==0) a/=i;
24         }
25     if (a>1) return qwq/a*(a-1);
26     return qwq;
27 }
28 long long kuai(long long a,long long b){
29     long long qwq=1;
30     long long qaq=a;
31     while (b){
32         if (b&1) qwq=qwq*qaq%n;
33         qaq=qaq*qaq%n;
34         b>>=1;
35     }
36     return qwq;
37 }
38 void getyin(){
39     top=0;
40     long long a=fai;
41     for (long long i=2;i*i<=a;++i)
42         if (a%i==0){
43             yin[++top]=i;
44             yin[++top]=a/i;
45         }
46 }
47 int main(){
48     n=read();
49     p=read();
50     fai=getfai();
51     getyin();
52     while (p--){
53         q=read();
54         if ((q==0)||(kuai(q,fai)%n!=1)) {putchar('0');continue;}
55         qwq=true;
56         for (long long i=1;i<=top;++i)
57          if (kuai(q,yin[i])%n==1) {qwq=false; break;}    
58         if (qwq) putchar('1');
59         else putchar('0');
60     }
61     return 0;
62 }
神奇的代码
复制代码

 

本文作者:~Lanly~

本文链接:https://www.cnblogs.com/Lanly/p/7405071.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   ~Lanly~  阅读(241)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.