C语言-算法-快速幂

发布时间:2024年01月24日

【模板】快速幂

题目描述

给你三个整数 a , b , p a,b,p a,b,p,求 a b ? m o d ? p a^b \bmod p abmodp

输入格式

输入只有一行三个整数,分别代表 a , b , p a,b,p a,b,p

输出格式

输出一行一个字符串 a^b mod p=s,其中 a , b , p a,b,p a,b,p 分别为题目给定的值, s s s 为运算结果。

样例 #1

样例输入 #1

2 10 9

样例输出 #1

2^10 mod 9=7

提示

样例解释

2 10 = 1024 2^{10} = 1024 210=1024 1024 ? m o d ? 9 = 7 1024 \bmod 9 = 7 1024mod9=7

数据规模与约定

对于 100 % 100\% 100% 的数据,保证 0 ≤ a , b < 2 31 0\le a,b < 2^{31} 0a,b<231 a + b > 0 a+b>0 a+b>0 2 ≤ p < 2 31 2 \leq p \lt 2^{31} 2p<231

代码

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
	long long a, b, p, ans,x , y;
	scanf("%lld %lld %lld", &a, &b, &p);
	x = a;
	y = b;
	ans = 1;
	x = x % p;
	
	while (y > 0)
	{
		if ((y % 2) == 1)
		{
			ans = (ans * x) % p;
		}
		y = y / 2;
		x = (x * x) % p;
	}
	printf("%lld^%lld mod %lld=%lld", a, b, p, ans);
	
	return 0;
}
文章来源:https://blog.csdn.net/2301_79837864/article/details/135816889
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。