我这个怎么错的
查看原帖
我这个怎么错的
602124
ztrztr楼主2022/5/7 15:15
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll Pow(ll a, ll b, ll m){
	if(b == 0)
		return 1;
	else if(b & 1)
		return a * Pow(a, b - 1, m) % m;
	else{
		ll num = Pow(a, b/2, m) % m;	//优化 
		return num * num % m;// 不直接写成return Pow(a, b/2, m) * Pow(a, b/2, m)
	}
	
}
int main(){
    ios::sync_with_stdio(false);
    ll m;
    cin >> m;
    if (m % 2 == 0) cout << Pow(2, 998244351, 998244353);
    else if (m % 4 == 1) cout << (m - 1) * Pow(2 * m, 998244351, 998244353);
    else if (m % 4 == 3) cout << (m + 1) * Pow(2 * m, 998244351, 998244353);
//cout << m / 2;
    return 0;
}

我是按照ternary_tree 的思路来做的

2022/5/7 15:15
加载中...