题面

试题 D: 序列求和
本题总分:10 分
【问题描述】
学习了约数后,小明对于约数很好奇,他发现,给定一个正整数 t,总是可以找到含有 t 个约数的整数。小明对于含有 t 个约数的最小数非常感兴趣,并把它定义为 S t S_t St​。
例如 S 1 = 1 S_1 = 1 S1​=1, S 2 = 2 S_2 = 2 S2​=2, S 3 = 4 S_3 = 4 S3​=4, S 4 = 6 S_4 = 6 S4​=6,· · · 。
现在小明想知道,前 60 个 S i S_i Si​ 的和是多少?即 S 1 S_1 S1​ + S 2 S_2 S2​ + · · · + S 60 S_{60} S60​ 是多少?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

思路

在网上找了半天都没有这题的正确题解,决赛A组的填空题都没人写题解?好吧,然而我也不会,写了个暴力,打表到50就不行了,看来答案至少到long long了。
请教了搞数学的队友yz @yingyingying002(yz tql),告诉我直接dfs搜索,分解数求值。

举个例子,求因子数为12的最小数。

12 = 6 ∗ 2 ; a n s = 2 5 ∗ 3 1 12 = 6*2;ans=2^5*3^1 12=6∗2;ans=25∗31
  = 3 ∗ 2 ∗ 2 ; a n s = 2 2 ∗ 3 1 ∗ 5 1 = 3*2*2;ans=2^2*3^1*5^1 =3∗2∗2;ans=22∗31∗51
  = 4 ∗ 3 ; a n s = 2 3 ∗ 3 2 = 4*3;ans=2^3*3^2 =4∗3;ans=23∗32
  = 2 ∗ 2 ∗ 3 ; a n s = 2 2 ∗ 3 1 ∗ 5 1 = 2*2*3;ans=2^2*3^1*5^1 =2∗2∗3;ans=22∗31∗51

12有以上4种分解方法,每个乘数-1就是要求的数分解后的质数的幂次(唯一分解定理),接下来考虑如何分配这些幂次给质数使得数最小?显然贪心。我们看最后一种分解方法,12=2*2*3,将其降序排序,3,2,2,再减一为2,1,1,那么显然 2 2 ∗ 3 1 ∗ 5 1 2^2*3^1*5^1 22∗31∗51能够让数尽量小并且满足因子数为12。

最后,我们dfs搜出所有的分解情况,然后其中最小的数。

另外,特判因子数为质数,比如因子数是13,减一是12,这个幂次全部分配给2,能得到的最小数是212,满足因子数是13。

代码

#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long ll;
const ll N=1e5,inf=1e18;
bool vis[N+10];
ll prime[N+10],tot=0,mi;
void get_prime() // 素数筛
{memset(vis,1,sizeof(vis));vis[0]=vis[1]=0;for(int i=2;i<=N;i++){if(vis[i])prime[tot++]=i;for(int j=0;j<tot&&i*prime[j]<=N;j++){vis[i*prime[j]]=0;if(i%prime[j]==0)break;}}
}
ll qpow(ll a,ll b) // 快速幂
{ll s=1;while(b){if(b&1)s=s*a;b/=2;a*=a;}return s;
}
ll dfs(ll x,vector<ll>g) // 将x分解成若干个数的乘积
{if(vis[x]||x==1)return qpow(2,x-1); // 特判质数和1for(ll i=2;i*i<=x;i++){if(x%i==0){ll t=x/i; // 大的那个数 g.push_back(i);// 更新mi vector<ll>tmp=g;tmp.push_back(t); sort(tmp.begin(),tmp.end(),greater<ll>());ll s=1;for(int j=0;j<tmp.size();j++)s*=qpow(prime[j],tmp[j]-1);  mi=min(mi,s);dfs(t,g);g.pop_back();}}return mi;
}
int main()
{ios::sync_with_stdio(false);get_prime();ll ans=0;vector<ll>g;for(int i=1;i<=60;i++){mi=inf;g.clear();ll ts=dfs(i,g);ans+=ts;//printf("i=%d ts=%lld ans=%lld\n",i,ts,ans);}printf("%lld\n",ans);return 0;
}

答案:292809912969717649

2019年第十届蓝桥杯决赛(国赛) C++大学A组 D题 序列求和【全网找不到的题解?】相关推荐

  1. 第九届蓝桥杯(省赛)C++C组真题题解

    文章目录 题目链接 C组真题(剩余题目同B组真题相同,已给出B组真题题目链接) 题目结构 第一题 哪天返回 第二题 猴子分香蕉 第五题 书号验证 第六题 稍小分数 第七题 次数差 第八题 等腰三角形 ...

  2. 第十届蓝桥杯单片机国赛代码实现

    代码如下: #include <STC15F2K60S2.H> #include "iic.h" #include "onewire.h" #inc ...

  3. [蓝桥杯解题报告]第十届蓝桥杯大赛省赛(软件类)真题C++A组 Apare_xzc

    蓝桥杯第十届省赛软件类C++A组解题报告 Apare_xzc 2020/2/13 考生须知 A. 平方和(5分) 分析: 这个题就是简单的模拟.只要循环一遍,判断每个数是否含有2019,然后平方相加即 ...

  4. 第十届蓝桥杯(国赛)——大胖子走迷宫

    题目描述 小明是个大胖子,或者说是个大大胖子,如果说正常人占用 1×11 × 11×1 的面积,小明要占用 5×55 × 55×5 的面积. 由于小明太胖了,所以他行动起来很不方便.当玩一些游戏时,小 ...

  5. 第十届蓝桥杯(国赛)——拼接

    问题描述 小明要把一根木头切成两段,然后拼接成一个直角. 如下图所示,他把中间部分分成了 n × n n × n n×n 的小正方形,他标记了每个小正方形属于左边还是右边. 然后沿两边的分界线将木头切 ...

  6. 第六届蓝桥杯大赛省赛C语言B组-填空题-星系炸弹(Java实现)

    星系炸弹 在X星系的广袤空间中漂浮着许多X星人造"炸弹",用来作为宇宙中的路标. 每个炸弹都可以设定多少天之后爆炸. 比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2 ...

  7. 第六届蓝桥杯大赛省赛C语言B组-填空题-奖券数目(Java实现)

    奖券数目 有些人很迷信数字,比如带"4"的数字,认为和"死"谐音,就觉得不吉利. 虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求.某抽奖活动的奖券号码是5位 ...

  8. 南林蓝桥杯计算机大赛,我院计算机系在2019年第十届蓝桥杯大赛(省赛)中获得5项一等奖...

    我院计算机系在2019年第十届蓝桥杯大赛(省赛)中获得5项一等奖 在刚刚结束的2019年第十届蓝桥杯全国软件和信息技术专业人才大赛(省赛)中,我院计算机系获得了5项一等奖. 软件和信息技术产业作为我国 ...

  9. 2019年第十届蓝桥杯 - 省赛 - C/C++研究生组 - G. 扫地机器人

    2019年第十届蓝桥杯 - 省赛 - C/C++研究生组 - G. 扫地机器人 Ideas 首先我们根据数学常识可以知道,当每个机器人清扫的范围差不多时,最好都是 N / K,花的时间应该是最少的. ...

最新文章

  1. [精选]MySQL的各种锁(表锁,行锁,悲观锁,乐观锁,间隙锁,死锁)
  2. 聚类 高维聚类 聚类评估标准 EM模型聚类
  3. 关于Ubuntu20.04 sudo vi找不到命令解决方法
  4. 直接插入排序python实现
  5. rtems 4.11 RTC驱动 (arm, beagle)
  6. 基于numpy的多项式拟合预测人口数值
  7. App Engine中的Google Services身份验证,第2部分
  8. C# 转繁体转简体转拼音,超级文本大转换
  9. STL中的序列式容器——deque(双端队列)
  10. Spring入门之bean的配置
  11. vios support for power
  12. 【Unity3D--自由观察模型】模型自动旋转+触屏旋转和缩放
  13. maxcomputer内建函数按字母排序
  14. 组织机构代码和统一社会信用代码校验规则以及java校验工具类
  15. 计算机会计实务好学吗,会计电算化难吗
  16. 响铃:抖音的敌人不是快手
  17. excel中插入文档
  18. Oracle 表字段的创建、删除、修改、查询
  19. Git提交指定的文件
  20. 移动端行驶证、驾驶证识别OCR—移动互联神器

热门文章

  1. 区块链会计案例_区块链会计行业 区块链会计应用案例
  2. 大家敏捷,才是真的敏捷——记敏捷培训
  3. 主引导记录(MBR)的反汇编分析
  4. IPTVOTT,未来谁更香——关于新媒股份的一点思考
  5. Managed DirectX中的DirectShow应用(简单Demo及源码)
  6. 如何用SaaS科技赋能中小企业管理
  7. 前端笔记1 HTML基础
  8. mac 重置系统关机启动参数,重置电脑闪存数据
  9. 工程测量计算机在线用,《用TI 图形计算器学编程》—应用篇—工程测量.pdf
  10. 强监管焕新外卖行业,美团、饿了么如何应对?