Jzoj4742NOIP2016提高A组模拟9.2快速幂单峰
Posted SSL_ZZL
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jzoj4742NOIP2016提高A组模拟9.2快速幂单峰相关的知识,希望对你有一定的参考价值。
Link
Jzoj【4742】【NOIP2016提高A组模拟9.2】单峰
题面
Description
Input
Output
Sample Input
2
Sample Output
2
Data Constraint
解题思路
证明不太会,考场上打了个暴搜,然后找到的规律
答案 = 2 ^ (n - 1),跑个快速幂就好了
Code
#include <iostream>
#include <cstdio>
#define ll unsigned long long
#define P 1000000007
using namespace std;
ll n, ans;
int f[500];
void ksm(ll x) { //猥琐自编快速幂,因为以前写的都是递归,然后没学网上的优化,这种O(n)又通俗易懂的东西比较适合我
int n = 0;
while(x) {
n ++;
if(x % (ll)2) f[n] = 1; //标记要不要 * 2(就是快速幂里的if(x&1)ans=ans*P)
x /= (ll)2;
}
ans = 1;
while(n > 0) {
if(f[n])
ans = ((ans * ans % P) * 2 % P) % P;
else
ans = ans * ans % P;
n --;
}
printf("%lld\\n", ans);
}
int main() {
scanf("%lld", &n);
ksm(n - 1);
}
以上是关于Jzoj4742NOIP2016提高A组模拟9.2快速幂单峰的主要内容,如果未能解决你的问题,请参考以下文章
jzoj4624NOIP2016A组模拟7.13KMP数学字符串匹配
jzoj3505NOIP2013模拟11.4A组组合逆元积木