数论
提交文件: number.cpp
输入文件: number.in
输出文件: number.out
时间空间限制: 1s, 512MB
题目描述
定义数论函数 λ(n) 为:
• 设 n 的质因数分解为 n = ∏ pei i ,则 λ(n) = ( 1)
∑ei
比如 λ(4) = 1, λ(2) = 1, λ(1) = 1。
你的任务是求:
输入格式
共一行,一个整数 n。
输出格式
共一行,一个整数,表示答案 对 998244353 取模 之后的结果
样例数据
数据范围
对于 20% 的数据,n ≤ 100;
对于 60% 的数据,
n
≤
2
×
1
0
5
n ≤ 2 × 10^5
n≤2×105;
对于所有的数据,n ≤ 1012。
解题思路
这道题十分的恶心,特别难推,我直接推到心态裂开,最后“借鉴”了一下wj巨爷的程序才做了出来。主要是推公式的过程难,代码实现起来十分简单。最后推出来的是:
for(long long i=1;i*i<=n;i++)
ans=(ans+(n/(ii)))%998244353;
代码
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
long long n,ans=0;
int main()
{
cin>>n;
for(long long i=1;i*i<=n;i++)
ans=(ans+(n/(i*i)))%998244353;
cout<<ans;
return 0;
}