hihoCoder 1785
线性筛 + 递推
#include <bits/stdc++.h> const int N = 1e6 + 10, Mod = 1e9 + 7; int n; int phi[N], prime[N], tot, ans; bool mark[N]; int k; int f[N]; void Getphi() { for(int i = 2; i <= k; i ++) { if(!mark[i]) { prime[++ tot] = i; } for(int j = 1; j <= tot; j ++) { if(i * prime[j] > N) break; mark[i * prime[j]] = 1; } } for(int i = 1; i <= tot; i ++) f[prime[i]] = 1; } int main() { std:: cin >> k; Getphi(); for(int i = 0; i <= k; i ++) f[i] = 1; for(int i = 2; i <= k / 2; i ++) for(int j = 2; i * j <= k; j ++) //if(!vis[i * j]) f[i * j] = (f[i * j] + f[i]) % Mod; std:: cout << f[k]; return 0; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步