链接:https://ac.nowcoder.com/acm/contest/331/J
小希最近想知道一个东西,就是A+B=A|B(其中|为按位或)的二元组有多少个。
当然,直接做这个式子对小希来说太难了,所以小希改变了一些条件,她仅想知道其中A,B<NA,B<N的情况,其中N为2的幂次。
输入
N=2^M,M<=100。即2的M次为N。
输出
一个整数ans,对998244353取模
因为0+0=0,0+1=1,1+0=1,只有(0,0)(1,0)(0,1)异或所有就看二进制有多少位可以异或就行惹。可以根据乘法原理 有3^M
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ios ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
const int Mod=998244353;
ll qpow(ll x,ll y)
{
ll ans=1;
while(y)
{
if(y&1)
ans=ans*x%Mod;
x=x*x%Mod;
y>>=1;
}
return ans;
}
int main()
{
ios;
ll m;
cin>>m;
cout<<qpow(3,m)<<endl;
return 0;
}