位运算:题集

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

}


目录
相关文章
|
Dubbo Java 应用服务中间件
深入理解Dubbo-5.服务注册源码分析(上)
深入理解Dubbo-5.服务注册源码分析
176 0
|
存储 安全 API
[笔记]Windows核心编程《五》线程基础
[笔记]Windows核心编程《五》线程基础
129 0
|
小程序 编译器 C语言
C调用C++类成员函数--实例
C与C++调用问题原因主要在于C编译器和C++编译器的不同。C是过程式语言,C编译器编译后,函数在符号库中就是函数名,没有其他任何附加信息。而C++是对象式语言,支持函数重载,C++编译器编译后,在符号库中的名字包含了函数名、函数参数类型和函数返回类型等。因此,当两者混合编译时,会相互找不到对象。
696 0
C调用C++类成员函数--实例
|
前端开发
前端学习笔记202304学习笔记第十七天-vue3.0-实现嵌套路由
前端学习笔记202304学习笔记第十七天-vue3.0-实现嵌套路由
86 0
|
前端开发 Java Android开发
React Native工程修改Android包名
默认初始化的React Native工程,生成Android工程的时候,包名默认是React Native工程的名字,跟一般Android工程com.company.xxx不一样。 这时候就需要手动修改Android工程里面的包名信息: 如下: 首先修改React Native目录下的MainActivity.
1224 0
|
3天前
|
Android开发 开发者 Windows
这是我设计的一种不关机,然后改造操作系统的软件设计思路2.0版本
本文介绍了在不重启系统的情况下实现操作系统改造的两种方案。第一种方案通过SLFM Recovery模式,在独立于操作系统的最高权限环境下完成系统更新与改造,并支持断电恢复与失败回滚。第二种方案采用多分区机制,通过SLFM套件在独立分区中完成系统改造,适用于可中断与不可中断服务场景,确保系统更新过程的安全与稳定。
219 132