专栏文章

题解:P13679 [IAMOI R2] 传奇模数

P13679题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@miofjcy7
此快照首次捕获于
2025/12/02 18:22
3 个月前
此快照最后确认于
2025/12/02 18:22
3 个月前
查看原文

致敬传奇模数998244353

注:下文中的 modmod 均指 998244353。

题目分析:

题目意思很清楚了,所以不再复述。101810^{18} 的数据范围不需要高精度,开long long就可以解决。
(注意不需要开unsigned long long,尽量别开,避免出现某些意料之外的情况)
注意到向下取整,所以我们可以认为:
在区间 [mod×k,mod×(k+1))[mod \times k,mod \times (k+1)) 的数全部都是kk
一个完整的区间有 modmod 个数,而它每一项都相等,所以它的总和对mod取模一定会 =0=0,可以直接不用管了
所以我们只需要关注剩下的不完整的区间就可以了。不完整的区间总共有 (nmodmod+1)(n\mod mod +1) 个数(有点难蚌),它们都是 nmod\lfloor \frac{n}{mod} \rfloor,相乘一下,这道题就这么愉快地解决啦~

CODE:

CPP
#include <bits/stdc++.h>
#define int long long
#define mod 998244353
using namespace std;

int n,ans;

signed main(){
	
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	
	cin>>n;
	int cnt=n%mod+1,tmp=n/mod;
	cout<<(cnt*tmp)%mod;
	return 0;
}
再见~

评论

0 条评论,欢迎与作者交流。

正在加载评论...