2021.8.10提高B组模拟2T1 单峰(快速幂)
Posted SSL_LKJ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021.8.10提高B组模拟2T1 单峰(快速幂)相关的知识,希望对你有一定的参考价值。
单峰
题目大意
输入样例
2
输出样例
2
题目数据
解题思路
通过暴力全排列判断,求出答案之后
我们可以发现答案有规律
n= 1 2 3 4 5 6 7 8 9 10 ……
answer= 1 2 4 8 16 32 64 128 256 512 ……
答案为2 n-1
n太大,我们就可以考虑用快速幂
AC代码
#include<cstdio>
using namespace std;
const long long Mod=1000000007;
long long n;
long long ksm(long long x)//快速幂
{
if(x==1)return 2;
long long o=ksm(x/2)%Mod;
if(x&1)return 1ll*o*o%Mod*2%Mod;//是奇数次幂就拆成3种情况
else return 1ll*o*o%Mod;//偶数次幂就拆成2种情况
}
int main()
{
scanf("%lld",&n);
n--;
if(n==0)//特判
{
printf("1");
return 0;
}
printf("%lld",ksm(n)%Mod);
return 0;
}
谢谢
以上是关于2021.8.10提高B组模拟2T1 单峰(快速幂)的主要内容,如果未能解决你的问题,请参考以下文章
Jzoj4742NOIP2016提高A组模拟9.2快速幂单峰
2021.7.13提高B组模拟2T1 消息传递(记忆化搜索)(70分)(P2018 AC)
2021.8.10提高B组模拟2T2 祖孙询问(lca)(倍增)