位运算:题集

简介: 1.a^b(快速幂)题目:求 a 的 b 次方对 p 取模的值。

1.a^b(快速幂)

题目:

求 a 的 b 次方对 p 取模的值。

输入格式:

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

输出格式:

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

数据范围:

0≤a,b≤109

1≤p≤109

输入样例:

3 2 7

输出样例:

2

分析:

这道题一看很简单,但是事实往往不是如此,当a,b的之很大的时候,long long都存不下。所以要用到一个专用模板。看下面的源码:

源码:

include <bits/stdc++.h>

using namespace std;

int main()

{

long long a,b,p,c;
cin >> a>>b>>p;
int ras=1%p;
while(b)
{
if(b&1) ras=ras*1ll*a%p;
    a=a*a*1ll%p;
    b>>=1;
}
cout << ras<<endl;
return 0;

}

2.64位整数乘法(与第一题一样的道理)

题目:

求 a 乘 b 对 p 取模的值。

输入格式:

第一行输入整数a,第二行输入整数b,第三行输入整数p。

输出格式:

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

数据范围:

1≤a,b,p≤1018

输入样例:

3

4

5

输出样例:

2

3

分析:

这道题和上一道的道理差不多,只不过上一道是乘法,这一道是加法。细节的话看源码:

源码:

include <bits/stdc++.h>

using namespace std;

int main()

{

long long a,b,c,d;
cin>>a>>b>>c;
d=0;
while(b)
{
if(b&1)
    {
        d=(d*1ll+a)%c;
    }
    a=(a*1ll+a)%c;
    b>>=1;
}
cout<<d<<endl;
return 0;

}


目录
相关文章
|
存储 Java
一篇搞定位运算(&、|、^、~、>>、<<、>>>)
我们最了解的就是十进制 , 除了十进制 , 还有二进制 , 六进制 , 八进制等等 , 由于位运算操作就是二进制 , 所以我们主要来说一下二进制 , 十进制的个位有(0~9)这几个数字 , 而二进制也相同 , 二进制的个位上只有0和1
66 0
|
2月前
|
机器学习/深度学习
位运算详解
本文介绍了位运算符及其基本操作,并通过几个例题详细解析了位运算的应用。内容包括左移`&lt;&lt;`、右移`&gt;&gt;`、按位取反`~`、与运算`&`、或运算`|`和异或运算`^`等运算符的使用方法。基本操作部分展示了如何检查和修改二进制位,以及异或运算的性质。例题部分则通过判定字符是否唯一、丢失的数字、两整数之和和消失的两个数字等问题,具体说明了位运算的实际应用技巧。
67 7
位运算详解
|
6月前
|
编译器 Linux C++
详细解读C++中的位运算总结
详细解读C++中的位运算总结
37 0
|
7月前
|
C++
位运算
位运算“【5月更文挑战第23天】”
43 1
|
6月前
|
机器学习/深度学习
常见位运算的总结
常见位运算的总结
59 0
|
存储 Java 程序员
“高端”的位运算
大家好,我是王有志。原计划迭代作为预备知识的收尾,不过在解2的幂和4的幂时,想到关于数字2的问题可以通过位运算去解决,因此补充了关于位运算的内容。
95 1
|
算法 Java 编译器
第 13 天_位运算
第 13 天_位运算
94 0
|
算法 数据安全/隐私保护
基本的位运算
基本的位运算
|
存储
位运算及A+B
位运算及A+B
104 0
位运算的小技巧
快速学习位运算的小技巧

热门文章

最新文章