Jzoj4742NOIP2016提高A组模拟9.2快速幂单峰

Posted SSL_ZZL

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jzoj4742NOIP2016提高A组模拟9.2快速幂单峰相关的知识,希望对你有一定的参考价值。

【NOIP2016提高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快速幂单峰的主要内容,如果未能解决你的问题,请参考以下文章

jzoj6276. noip提高组模拟1树

jzoj4624NOIP2016A组模拟7.13KMP数学字符串匹配

jzoj3505NOIP2013模拟11.4A组组合逆元积木

jzoj2017-8-18提高组ANOIP模拟赛

jzoj3523NOIP2013模拟11.7A组树上倍增JIH的玩偶(tree)

jzoj3528NOIP2013模拟11.7A组数学拓扑DP图书馆(library)