位运算:题集

简介: 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;

}


目录
相关文章
|
4月前
|
消息中间件 Kubernetes NoSQL
剑指offer常见题 - 位运算问题(二)
剑指offer常见题 - 位运算问题(二)
|
4月前
|
消息中间件 Kubernetes NoSQL
剑指offer常见题 - 位运算问题(一)
剑指offer常见题 - 位运算问题(一)
《蓝桥杯每日一题》trie树·143. 最大异或对
《蓝桥杯每日一题》trie树·143. 最大异或对
48 0
|
算法 C++
【每日算法Day 71】面试官想考我这道位运算题,结果我给出了三种解法
【每日算法Day 71】面试官想考我这道位运算题,结果我给出了三种解法
104 0
|
存储 机器学习/深度学习 算法
算法刷题第十四天:位运算--2
代码实现中,每枚举一位就将 n 右移一位,这样当前 n 的最低位就是我们要枚举的比特位。当 n 为 0 时即可结束循环。
87 0
算法刷题第十四天:位运算--2
|
机器学习/深度学习 算法
算法刷题第十三天:位运算--1
时间复杂度:O(logn)。循环次数等于 n 的二进制位中 1 的个数,最坏情况下 n 的二进制位全部为 1。我们需要循环 logn 次。
76 0
算法刷题第十三天:位运算--1
|
存储 算法
【面试锦囊】位运算介绍与经典例题总结
位运算隐藏在编程语言的角落中,其神秘而又强大,暗藏内力,有些人光听位运算的大名的心中忐忑,还有些人更是一看到位运算就远远离去,我之前也是。但狡猾的面试官往往喜欢搞偷袭,抓住我们的弱点搞我们,为了防患于未然,特记此篇!
123 0
【面试锦囊】位运算介绍与经典例题总结
|
机器学习/深度学习 人工智能 算法
[解题报告]《算法零基础100讲》(第42讲) 位运算 (位与) 进阶
[解题报告]《算法零基础100讲》(第42讲) 位运算 (位与) 进阶
[解题报告]《算法零基础100讲》(第42讲) 位运算 (位与) 进阶
|
算法 UED
[解题报告]《算法零基础100讲》(第49讲) 位运算 (右移)
[解题报告]《算法零基础100讲》(第49讲) 位运算 (右移)
[解题报告]《算法零基础100讲》(第49讲) 位运算 (右移)
|
存储 人工智能 算法
[解题报告]《算法零基础100讲》(第45讲) 位运算 (位或) 进阶
[解题报告]《算法零基础100讲》(第45讲) 位运算 (位或) 进阶
[解题报告]《算法零基础100讲》(第45讲) 位运算 (位或) 进阶