2021牛客寒假算法基础集训营2 牛牛的“质因数”(筛法+简单dp)
发布日期:2021-06-30 10:28:27
浏览次数:2
分类:技术文章
本文共 957 字,大约阅读时间需要 3 分钟。
非常暴力的先筛一遍质数
然后对于 [ 2 , n ] [2,n] [2,n]每个数分解质因子计算答案, T L E TLE TLE
想一下怎么来优化
我们发现,数字 i i i的答案是有前驱的
形式化的说,设 i i i的最小素因子是 k k k
那么 i i i最后的答案就相当于在 i / k i/k i/k的答案前面拼上了一个 k k k
那么就可以使用 d p dp dp来求解了
#includeusing namespace std;#define int long longconst int mod = 1e9+7;const int maxn = 1e7+10;int n,top,ans,vis[maxn],prime[maxn],mi[maxn],f[maxn],c[maxn],bit[maxn],len[maxn];int LEN(int x){ int now = 0; while( x ) x/=10,now++; return now;}void makeprime(){ for(int i=2;i<=n;i++) { if( !vis[i] ) prime[++top] = i,c[i] = LEN(i),mi[i] = i; for(int j=1;j<=top&&i*prime[j]<=n;j++) { vis[i*prime[j]] = 1; mi[i*prime[j]] = prime[j]; if( i%prime[j]==0 ) break; } }}signed main(){ bit[0] = 1; for(int i=1;i<=70000;i++) bit[i] = bit[i-1]*10%mod; cin >> n; makeprime(); for(int i=2;i<=n;i++) { int son = i/mi[i]; f[i] = ( f[son]+mi[i]*bit[len[son]]%mod )%mod; len[i] = len[son]+c[mi[i]]; ans = ( ans+f[i] )%mod; } cout << ans;}
转载地址:https://issue-is-vegetable.blog.csdn.net/article/details/113618090 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2024年04月29日 06时35分18秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
基于java的客户关系管理系统的设计与实现
2019-04-30
十二时辰篇:这该死的 996
2019-04-30
2021最新 上海互联网公司排名
2019-04-30
字节vs快手!取消大小周之战
2019-04-30
送一个闲置显示器!
2019-04-30
这是张自带声音的图片
2019-04-30
抖音超火:勇敢牛牛,不怕困难表情包全集
2019-04-30
程序员之间的各种鄙视链
2019-04-30
基于PHP的网上商城
2019-04-30
基于PHP和MySQL实现的高校成绩管理系统
2019-04-30
基于TCP socket实现的HTTP WEB服务器
2019-04-30
基于Web搜索引擎的设计与实现
2019-04-30
图书管理系统
2019-04-30
基于AdaBoost算法的情感分析研究
2019-04-30
基于C的α-β剪枝算法实现的AI五子棋游戏
2019-04-30
基于Python的Django和MySQL实现的合同管理系统
2019-04-30
基于python实现的电影推荐系统
2019-04-30
基于QT的网络五子棋游戏程序的设计与实现
2019-04-30
基于SOA的分布式水果商店系统
2019-04-30
基于SSH的易买网商城的设计与实现
2019-04-30