ALGORITHM NOTE / ARCHIVE

2024杭电多校3——1001深度自同构

一开始和队友想出来的式子,是的因子数组 一个的dp显然是过不了的 然后想到了对每个数枚举倍数预处理因子的话计算的话,时间复杂度是,因为是约等于 发现还是TLE,STL常数太大了,队友突然想到可以直接算 设当前数字是,枚举倍数,, 已经算过了,可以进行转移,另外特殊处理因子是本身的情况,即可

文章插图 一开始和队友想出来的式子,是的因子数组 一个的dp显然是过不了的 然后想到了对每个数枚举倍数预处理因子的话计算的话,时间复杂度是,因为是约等于 发现还是TLE,STL常数太大了,队友突然想到可以直接算 设当前数字是,枚举倍数,, 已经算过了,可以进行转移,另外特殊处理因子是本身的情况,即可

#include <bits/stdc++.h>
using namespace std;

const int mod = 998244353;
int n;
long long ans[1000100];
int main() {
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    cin>>n;
    for(int i = 1;i<=1e6;++i){
        ans[i]+=1;
        for(int j = 1;j<=1e6/(i+1);++j){
            ans[(i+1)*j]=(ans[(i+1)*j]+ans[i])%mod;
        }
    }
    for(int i = 1;i<=n;++i) cout<<ans[i]%mod<<" ";
    return 0;
}

太菜啦QAQ,少用STL