hdu 1905 幂成

题意://给一个p 和一个a,如果这个
//p 本身就是一个素数,就输出no,如果不是素数,那么计算 ( a ^ p) % p 如果结果等于a
那么输出yes 否则输出no

zsd:用__int64的时候一定要注意__int64与别的数转化的时候会出错误 所以一定要都是__int64位

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

//给一个p 和一个a,如果这个

//p 本身就是一个素数,就输出no,如果不是素数,那么计算 ( a ^ p) % p 如果结果等于a 那么输出yes 否则输出no

#include<iostream>

#include<cmath>

using
namespace std;

bool
isprime(int
x)

{

    for(int
i=2;i<=(int)sqrt(x*1.0)+1;i++)

        if(x%i==0)

            return
false;

    return 
true;

}

bool
fun(__int64
x,__int64
e,__int64
p)

{

    __int64
a=x;

    __int64
base=x;

    __int64
sum=1;

    while(e>0)

    {

        if(e&1) sum=(sum*base)%p;

        e/=2;

        base=(base*base)%p;

    }

    if(sum==a)

        return
true;

    return
false;

}

int
main()

{

    __int64
p,a;

    while(scanf("%I64d%I64d",&p,&a)!=EOF)

    {

        if(p==a&&p==0) break;

        if(isprime(p)) printf("no\n");

        else

            if(fun(a,p,p))

                printf("yes\n");

            else
printf("no\n");

    }

    return
0;

}

时间: 2024-10-27 12:32:39

hdu 1905 幂成的相关文章

嵌入式视频处理基础(二)

引言: 作为消费者,我们对于各种形式的视频系统都已经非常熟悉了.但是从嵌入式开发人员的角度来看,视频就好像是一张纷繁复杂的网络,里面充满了各种不同的分辨率.格式.标准与显示等. 隔行扫描和逐行扫描: 隔行扫描起源于早起的模拟电视广播,那时候需要按顺序将图像快速刷新,以减小视觉上的闪烁,但是当时的技术还无法做到这么快速的刷新整个屏幕.因此,就将每一帧进行交织处理,即分为两场,一个由奇数扫描行组成,另一个由偶数扫描行组成. 隔行扫描 帧分为奇数和偶数场 NTSC(PAL)的帧刷新率大约为30(25)

利用智能手机(Android)追踪一块磁铁(二)

在上一篇博客中提到了利用磁场强度推算传感器位置坐标的公式,下面就介绍怎么利用智能手机完成磁铁的追踪(任何具有磁感应器的装置均可以),这里主要是利用Android手机. ? 1:程序步骤: 首先将磁铁放置在远离手机的位置,然后拿着手机在空中做"倒8"字运动(就是这个运动轨迹:).这样做的目的就是标准化手机的磁感应器,因为磁感应装置很容易受到磁场的干扰变得不精准. 将手机放置平稳,然后记录当前的磁场强度,作为"原始磁场"(这个磁场必须精准可以取多次的平均值).Andro

HDU 2276 矩阵快速幂

Kiki & Little Kiki 2 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2650    Accepted Submission(s): 1393 Problem Description There are n lights in a circle numbered from 1 to n. The left of lig

HDU - 1588 Gauss Fibonacci (矩阵快速幂+二分求等比数列和)

Description Without expecting, Angel replied quickly.She says: "I'v heard that you'r a very clever boy. So if you wanna me be your GF, you should solve the problem called GF~. " How good an opportunity that Gardon can not give up! The "Prob

hdu 4549 M斐波那契数列(快速幂 矩阵快速幂 费马小定理)

题目链接http://acm.hdu.edu.cn/showproblem.php?pid=4549: 题目是中文的很容易理解吧.可一开始我把题目看错了,这毛病哈哈. 一开始我看错题时,就用了一个快速幂来解,不用说肯定wa,看题目的通过率也不高,我想会不会有啥坑啊.然而我就是那大坑,哈哈. 不说了,直接说题吧,先讨论k=1,2,3;时的解.这应该会解吧,不多说了: 从第四项开始f(4)=a^1+b^2;f(5)=a^2+b^3;f(6)=a^3+b^5......; 看出来了吧,a上的指数成斐波

HDU 2276 &amp; FZU 1692 (循环同构优化+矩阵快速幂)

HDU 2276 题意: 给定一个01**字符串环**(2<=字符串长度<=100)然后进行m次的变换. 定义变换的规则为:如果当前位置i的左边是1(下标为0的左边是n-1),那么i就要改变状态0->1 , 1->0 比如当前的状态为100101那么一秒过后的状态为010111. 思路: 用公式表示变化状态其实就是: ai=(a(i+n?1)%n+ai)%2 换成位操作就是: ai=a(i+n?1)%n^ ai 于是我们可以建立一个变化矩阵: ??????????1100...00

hdu 5171 GTY&#39;s birthday gift(数学,矩阵快速幂)

题意: 开始时集合中有n个数. 现在要进行k次操作. 每次操作:从集合中挑最大的两个数a,b进行相加,得到的数添加进集合中. 以此反复k次. 问最后集合中所有数的和是多少. (2≤n≤100000,1≤k≤1000000000) 思路: 写出来发现是要求Fibonaci的前n个数的和. Fibonaci是用矩阵快速幂求的,这个也可以. [Sn,Fn,Fn-1]=[某个矩阵]*[Sn-1,Fn-1,Fn-2] [S2,F2,F1]=[2,1,1] 然后写,,, 这个代码有些繁琐,应该把矩阵操作单独

hdu 2243 考研路茫茫——单词情结 ac自动机+矩阵快速幂

链接:http://acm.hdu.edu.cn/showproblem.php?pid=2243 题意:给定N(1<= N < 6)个长度不超过5的词根,问长度不超过L(L <231)的单词中至少含有一个词根的单词个数:结果mod 264. 基础:poj 2778DNA 序列求的是给定长度不含模式串的合法串的个数:串长度相当,都到了int上界了: 1.mod 264直接使用unsigned long long自然溢出即可:说的有些含蓄..并且也容易想到是直接使用内置类型,要不然高精度的

HDU 4365 Palindrome graph(几何变换+快速幂)

HDU 4365 题意:给你一个n*n的画,然后每个格子图上任意k种颜色之一,要求通过翻转旋转后与原图保持一致,且原图已有m个格子有颜色.求有多少种涂法? 思路: 可以发现,我们所求的画是个高度轴对称和中心对称的图形,我们沿两根对称轴与两根中心对称轴把图案切成八份,那么决定其涂色方案只需考虑其中一份即可,若其中一份有x个格子那么答案即是k^x. 然而还有一个条件,即已经有m个格子涂上了颜色,那么我们将m个格子映射至之前选择的八分之一区域内,表明该格子颜色已固定,假设有y个格子颜色已固定,那么答案