目录

  • 一、题目
  • 二、思路
  • 三、代码
  • 四、遇到的问题
  • 五、参考

一、题目

问题描述
  将一个数N分为多个正整数之和,即N=a1+a2+a3+…+ak,定义M=a1a2a3*…*ak为N的潜能。
  给定N,求它的潜能M。
  由于M可能过大,只需求M对5218取模的余数。
输入格式
  输入共一行,为一个正整数N。
输出格式
  输出共一行,为N的潜能M对5218取模的余数。
样例输入
10
样例输出
36
数据规模和约定
1<=N<10^18

二、思路

具体思路可见文末参考博客。

先来看几个数找找规律:4=2+2,5=2+3,6=3+3,7=3+2+2,8=3+3+2,9=3+3+3

发现规律如下:

(1)元素不会超过4,因为4=2+2,又可以转化为2的问题,而5=2+3,5<2*3,所以5总能分解成2和3。
(2)尽可能多分解出3,然后分解出2,不要分出1。

考虑任意一个数,除以3之后的结果有以下3种:
(1)能被3除断(即整除),那么就分解为3+3+…+3的情况即可。例如:9=3+3+3。
(2)被3除余1,分解为3+3+…+3+2+2或者3+3+…+3+4的情况,例如:10=3+3+2+2
(3)被3除余2,分解为3+3+…+3+2的情况,例如:11=3+3+3+2。

所以最好是分解成连续的3,或附带一两个2。

那么关键问题就变成了 3的k次方取模 的问题,这个用快速幂可以解决。

具体快速幂可见文末参考视频链接。

三、代码

//正整数N分解使得乘积M最大问题
#include <iostream>
using namespace std;typedef long long ll;
#define p 5218              //余数int fastPow(int a,ll k)     //递归实现快速幂
{//递归出口if (k == 0)return 1;if (k == 1)return a;ll t = fastPow(a, k / 2) % p;if (k % 2 == 0)  //如果k是偶数return t * t % p;return t * t * a % p;
}
int main()
{ll N;cin >> N;if (N <= 2){cout << N;return 0;}if (N % 3 == 0)        //如果能够被3直接整除{ll k = N / 3; //问题就转化为3的k次方模pcout << fastPow(3,k);return 0;}if (N % 3 == 1){ll k = N / 3 - 1;cout << fastPow(3,k) * 4 % p;return 0;}if (N % 3 == 2){ll k = N / 3;cout << fastPow(3, k) * 2 % p;return 0;}
}

四、遇到的问题

在实现快速幂函数时,误将k定义为int类型,导致错误

五、参考

B站
快速幂问题

博客
正整数分解使得乘积最大问题
数论 - 正整数分解使得乘积最大问题

蓝桥杯 算法训练 数的潜能 正整数分解使得乘积最大问题相关推荐

  1. 蓝桥杯 算法训练 印章

    蓝桥杯 算法训练 印章 共有n种图案的印章,每种图案的出现概率相同.小A买了m张印章,求小A集齐n种印章的概率. 输入输出: 一行两个正整数n和m 一个实数P表示答案,保留4位小数. 样例: 2 3 ...

  2. 蓝桥杯 算法训练 幸运的店家

    蓝桥杯 算法训练 幸运的店家 题目描述 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 炫炫开了一家商店,卖的货只有一个,XXX,XXX卖N元钱.有趣的是,世界上只有面值为3的幂的纸 ...

  3. 蓝桥杯——算法训练——数字三角形

    蓝桥杯--算法训练--数字三角形 这道题不难,但是比较典型,可以作为动态规划(dp)的入门篇,属于线性dp(LIS,LCS和数字三角形都是此类题型). ------------------------ ...

  4. 蓝桥杯 算法训练 逗志芃的危机

    蓝桥杯 算法训练 逗志芃的危机 题目描述 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 逗志芃又一次面临了危机.逗志芃的妹子是个聪明绝顶的人,相比之下逗志芃就很菜了.现在她妹子要和 ...

  5. 蓝桥杯算法训练合集十三 1.P06022.P07033.逗志芃的危机4.唯一的小可爱5.JOE的矩阵

    目录 1.P0602 2.P0703 3.逗志芃的危机 4.唯一的傻子 5.JOE的矩阵 1.P0602 问题描述 编写一个程序,输入一个4位的自然数,将组成该数的各位数字重新排列,形成一个最大数和一 ...

  6. 蓝桥杯 算法训练 强力党逗志芃

    蓝桥杯 算法训练 强力党逗志芃 题目描述 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 逗志芃励志要成为强力党,所以他将身上所以的技能点都洗掉了重新学技能.现在我们可以了解到,每个 ...

  7. 蓝桥杯算法训练 印章

    蓝桥杯 算法训练 印章 问题描述 ​ 共有n种图案的印章,每种图案的出现概率相同.小A买了m张印章,求小A集齐n种印章的概率. 输入格式 ​ 一行两个正整数n和m 输出格式 ​ 一个实数P表示答案,保 ...

  8. 蓝桥杯 算法训练 Beaver's Calculator

    蓝桥杯 算法训练 Beaver's Calculator 问题描述 从万能词典来的聪明的海狸已经使我们惊讶了一次.他开发了一种新的计算器,他将此命名为"Beaver's Calculator ...

  9. 蓝桥杯算法训练-24点(Python)

    问题描述 24点游戏是一个非常有意思的游戏,很流行,玩法很简单:给你4张牌,每张牌上有数字(其中A代表1,J代表11,Q代表12,K代表13),你可以利用数学中的加.减.乘.除以及括号想办法得到24, ...

  10. 蓝桥杯算法训练-强力党逗志芃

    持续更新蓝桥杯算法训练题解,有兴趣可以关注一波呀 题目 逗志芃励志要成为强力党,所以他将身上所以的技能点都洗掉了重新学技能.现在我们可以了解到,每个技能都有一个前提技能,只有学完了前提技能才能学习当前 ...

最新文章

  1. linux shell cgi post,linux下shell处理cgi的方法--post get
  2. mysql刷新连接_MYSQL频繁出现连接失败,刷新后正常的解决办法
  3. web报表移动端如何进行移动设备绑定与撤销
  4. SAP UI5 应用的中文乱码问题
  5. 算法学习——决策单调性优化DP
  6. I.Mx6 使用串口连接PSAM卡的注意事项
  7. mybatis 查询之神坑
  8. bash shell函数的定义及变量的简单说明
  9. 手动添加mysql服务
  10. AIR 窗口,自定义形状窗口,按钮
  11. Android渠道打包技术小结
  12. Python 变量 字符串 运算
  13. JQuery之拖拽插件
  14. mPaaS 小程序新手指南 | 《mPaaS 小程序自定义开发》
  15. 【观察】新华三大学:逆势而上,顺势而为,应势而变
  16. MySQL笔记4——SQL去重/笛卡尔积现象
  17. HTML网页设计结课作业~仿小米商城网站纯HTML模板源码(HTML+CSS)
  18. September 2006
  19. 破竹课堂-老A的杠杆术
  20. WebGIS期末复习

热门文章

  1. Julia: bug? = split ,isnumber
  2. Julia: SQLite库升级后的操作
  3. 为什么下一个十年的主战场在Serverless
  4. 成年人的21个规则,必须知道
  5. 英特尔开源技术中心招收Linux内核高手一名
  6. android设备离线授权方案,Android平台离线打包授权登陆插件配置
  7. 【元胞自动机】基于matlab激进策略元胞自动机三车道(开放辅路,软件园影响)交通流模型【含Matlab源码 1298期】
  8. 【优化调度】基于matlab改进的遗传算法求解风电场优化调度问题【含Matlab源码 1245期】
  9. 【优化算法】鸽群优化算法(PIO)【含Matlab源码 1077期】
  10. 【DVRP】基于matlab蚁群算法求解带距离的VRP问题【含Matlab源码 1040期】