【数论】【快速幂】CODEVS 2952 细胞分裂 2

裸快速幂取模,背诵模板用。

 1 #include<cstdio>
 2 using namespace std;
 3 typedef long long LL;
 4 LL n=1,m,q;
 5 LL Quick_Pow(LL a,LL p,LL MOD)
 6 {
 7     if(!p) return 1;
 8     LL ans=Quick_Pow(a,p>>1,MOD);
 9     ans=ans*ans%MOD;
10     if((p&1)==1) ans=ans*a%MOD;
11     return ans;
12 }
13 int main()
14 {
15     scanf("%lld%lld",&m,&q);
16     printf("%lld\n",Quick_Pow(2,m,q));
17     return 0;
18 }
时间: 2024-09-29 14:21:16

【数论】【快速幂】CODEVS 2952 细胞分裂 2的相关文章

2952 细胞分裂 2

2952 细胞分裂 2 时间限制: 2 s 空间限制: 16000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 著名生物学家F博士发现了一种单细胞生物. 它长得像蚯蚓,分裂速度极快(每分钟一次),分裂也像蚯蚓一样,断成两段,再长成. 它很好斗,只要q只聚集在一起,就会q只一群打起来,当然都会打死. 假设一开始有1只,求a分钟后有多少只单细胞蚯蚓? 输入描述 Input Description 两个正整数A  Q 输出描述 Output Description

矩阵乘法快速幂 codevs 1574 广义斐波那契数列

codevs 1574 广义斐波那契数列 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题目描述 Description 广义的斐波那契数列是指形如an=p*an-1+q*an-2的数列.今给定数列的两系数p和q,以及数列的最前两项a1和a2,另给出两个整数n和m,试求数列的第n项an除以m的余数. 输入描述 Input Description 输入包含一行6个整数.依次是p,q,a1,a2,n,m,其中在p,q,a1,a2整数范围内,n和m在长整数范围

hdu-5698 瞬间移动(数论+快速幂)

题目链接: 瞬间移动 Problem Description 有一个无限大的矩形,初始时你在左上角(即第一行第一列),每次你都可以选择一个右下方格子,并瞬移过去(如从下图中的红色格子能直接瞬移到蓝色格子),求到第nn行第mm列的格子有几种方案,答案对1000000007取模. Input 多组测试数据. 两个整数n,m(2<= n,m<=100000) Output 一个整数表示答案 Sample Input 4 5 Sample Output 10 题意: 思路: 跟那个只能向下和向右走有多

矩阵乘法快速幂 codevs 1732 Fibonacci数列 2

1732 Fibonacci数列 2 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 在“1250 Fibonacci数列”中,我们求出了第n个Fibonacci数列的值.但是1250中,n<=109.现在,你的任务仍然是求出第n个Fibonacci数列的值,但是注意:n为整数,且1 <= n <= 100000000000000 输入描述 Input Description 输入有多组数据,每

数论——快速幂全解

1.基本原理 数据级别在1,000,000,就正常做不会超时,最简单的快速幂,根据 (a * b) % p = (a % p * b % p) % p 测试链接:http://acm.hdu.edu.cn/showproblem.php?pid=1021 #include <iostream> #include <stdio.h> using namespace std; int main(){ int n; while(scanf("%d",&n)!=

数论——快速幂,模运算及快速幂求逆元

一.快速幂 原理: 快速幂的原理十分简单. ak=a2^0*a2^1*a2^2*…a2^x,其中k=20+21+22+…+2x. 这显然是正确的.因为任何一个数都可以表示成二进制. 接下去利用位运算实现即可. 代码实现 模板题链接:快速幂 代码模板如下:时间复杂度O(logk) int qmi(int a,int k,int p) { int res=1%p; while(k) { if(k&1)res=(long long)res*a%p; a=(long long)a*a%p; k>&g

数论-快速幂

快速幂:求 a^b % p 1 #include <iostream> 2 using namespace std; 3 4 typedef long long LL; 5 6 LL qmi(LL a, LL b, LL p){ 7 LL res = 1 % p; 8 while(b){ 9 if(b & 1)res = res * a % p; 10 a = a * a % p; 11 b >>= 1; 12 } 13 return res; 14 } 原文地址:http

矩阵乘法快速幂 codevs 1250 Fibonacci数列

codevs 1250 Fibonacci数列 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 定义:f0=f1=1, fn=fn-1+fn-2(n>=2).{fi}称为Fibonacci数列. 输入n,求fn mod q.其中1<=q<=30000. 输入描述 Input Description 第一行一个数T(1<=T<=10000). 以下T行,每行两个数,n,q(n<=109, 1<

数论——快速幂算法 a^b mod c

// 快速计算 (a ^ p) % m 的值 __int64 FastM(__int64 a, __int64 p, __int64 m){ if (p == 0) return 1; __int64 r = a % m; __int64 k = 1; while (p > 1) { if ((p & 1)!=0) { k = (k * r) % m; } r = (r * r) % m; p >>= 1; } return (r * k) % m; }