已经用上龟速乘了,还是90pts(不想用int_128);
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod=998244353;
ll n,ans=1;
ll qp(ll a,ll b){
ll c=0;
while(b){
if(b&1) (c+=a)%=mod;
b>>=1;
(a+=a)%=mod;
}
return c%mod;
}
int main(){
cin>>n;
n--;
ll cnt=1;
for(ll i=2;;i++){
ll now=qp(i,cnt)%mod;
if(n>=cnt) (n-=cnt)%=mod,(ans+=now)%=mod;
else{
cout<<(qp(n,i)%mod+ans%mod)%mod<<endl;
return 0;
}
ans%=mod,(cnt*=2)%=mod;
}
return 0;
}