1. 程式人生 > >[luogu P5035] 金坷垃

[luogu P5035] 金坷垃

我扔:https://www.luogu.org/problemnew/show/P5035

考慮倒推

假設  a|b, b-a=1

那麼可得 a = 1, b = 2

問題又可以轉換為a'|b', b'-a'=b=2

一路推過去就知道答案為2^{k-1}

程式碼:

#include<bits/stdc++.h>
#define mod 123456789
using namespace std;
long long t = 2, ans = 1, n;
int main(){
	scanf("%lld", &n); n --;
	for(;n; n >>= 1, t = t * t % mod) if(n&1) ans = ans * t % mod;
	printf("%lld", ans);
	return 0;
}

沒啥好說的,記得開long long