90 pts 求调。
查看原帖
90 pts 求调。
830990
roumeideclown楼主2024/12/17 19:14

感觉自己取模已经很干净了。

最后一个 Subtask 全 WA。

#include<bits/stdc++.h>
// #pragma G++ optimize(2)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
#define fi first
#define se second
const ll mod=998244353;
ll binpow(ll a,ll b) {
	if(b==0) return 1;
	if(b==1) return a%mod;
	ll res=binpow(a,b/2);
	if(b&1) return res*res%mod*a%mod;
	else return res*res%mod;
}
int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	ll n;
	cin>>n;
	ll ans=1,i=2;
	while((1ll<<(i-1))<=n) {
		ans+=binpow(2,i-2)%mod*i%mod;
		i++;
	}
	if((1ll<<(i-2))+1<=n) ans+=((n-(1ll<<(i-2)))%mod+mod)%mod*i%mod;
	cout<<ans<<'\n';
	return 0;
}
// 1 2 3 3 4 4 4 4 8个5 16个6 32个7 以此类推...
/*
i -> 2^(i-2)+1 ~ 2^(i-1)
*/
2024/12/17 19:14
加载中...