a^b

求 aa 的 bb 次方对 pp 取模的值。

输入格式

三个整数 a,b,pa,b,p ,在同一行用空格隔开。

输出格式

输出一个整数,表示a^b mod p的值。

数据范围

 

1≤a,b,p≤10^9

输入样例:

3 2 7

输出样例:

2

代码示例:

#include<stdio.h>
int main()
{
	int a,b,p;
	scanf("%d%d%d",&a,&b,&p);
	 int res = 1%p;
	 while(b)
    {
        if(b&1)
            res = res *1ll * a %p;
        a = a  *1ll * a %p;
        b >>= 1;
    }
    printf("%lld",res);	
}

 

06-05
### 位运算符 A^B 的含义与用法 #### 异或运算符 (^) 的基本概念 异或运算符 `^` 是一种按位运算符,作用于两个操作数的二进制表示形式。对于每一位,如果两个对应的二进制位相同,则结果为0;如果不同,则结果为1[^1]。具体规则如下: - 1 ^ 0 = 1 - 1 ^ 1 = 0 - 0 ^ 0 = 0 例如,计算 `5 ^ 3` 的过程如下: ```python # 5 的二进制表示为 0101 # 3 的二进制表示为 0011 # 按位异或后得到 0110,即十进制的 6 result = 5 ^ 3 print(result) # 输出:6 ``` #### 异或运算的性质 异或运算具有以下重要性质: - **交换律**:A ^ B = B ^ A[^2] - **结合律**:(A ^ B) ^ C = A ^ (B ^ C)[^2] - **任何数与0异或结果不变**:A ^ 0 = A[^2] - **相同数异或结果为0**:A ^ A = 0[^2] #### 异或运算的应用场景 1. **查找数组中唯一的元素** 如果一个数组中除了一个元素外,其余所有元素都出现了两次,可以利用异或运算找到这个唯一元素。因为相同的数异或结果为0,而0与任意数异或结果为该数本身[^2]。 ```python def find_unique(nums): result = 0 for num in nums: result ^= num return result nums = [4, 1, 2, 1, 2] print(find_unique(nums)) # 输出:4 ``` 2. **在不使用临时变量的情况下交换两个数** 异或运算可以用于实现两个数的交换,而无需额外的存储空间[^3]。 ```python a = 5 b = 3 a = a ^ b b = a ^ b a = a ^ b print(f"a = {a}, b = {b}") # 输出:a = 3, b = 5 ``` 3. **数据检验和加密** 异或运算常用于简单的数据校验或加密算法中。例如,在某些情况下,可以通过异或操作生成校验码来检测数据传输中的错误[^4]。 #### 示例代码 以下是一个完整的 Python 示例,展示如何使用异或运算符解决实际问题: ```python # 查找数组中唯一的元素 def find_unique_element(nums): unique = 0 for num in nums: unique ^= num return unique nums = [7, 3, 5, 3, 5, 7, 10] print(find_unique_element(nums)) # 输出:10 # 不使用临时变量交换两个数 x = 8 y = 13 x = x ^ y y = x ^ y x = x ^ y print(f"x = {x}, y = {y}") # 输出:x = 13, y = 8 ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值