蓝桥杯 算法训练 数的潜能 正整数分解使得乘积最大问题
目录
- 一、题目
- 二、思路
- 三、代码
- 四、遇到的问题
- 五、参考
一、题目
问题描述
将一个数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站
快速幂问题
博客
正整数分解使得乘积最大问题
数论 - 正整数分解使得乘积最大问题
蓝桥杯 算法训练 数的潜能 正整数分解使得乘积最大问题相关推荐
- 蓝桥杯 算法训练 印章
蓝桥杯 算法训练 印章 共有n种图案的印章,每种图案的出现概率相同.小A买了m张印章,求小A集齐n种印章的概率. 输入输出: 一行两个正整数n和m 一个实数P表示答案,保留4位小数. 样例: 2 3 ...
- 蓝桥杯 算法训练 幸运的店家
蓝桥杯 算法训练 幸运的店家 题目描述 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 炫炫开了一家商店,卖的货只有一个,XXX,XXX卖N元钱.有趣的是,世界上只有面值为3的幂的纸 ...
- 蓝桥杯——算法训练——数字三角形
蓝桥杯--算法训练--数字三角形 这道题不难,但是比较典型,可以作为动态规划(dp)的入门篇,属于线性dp(LIS,LCS和数字三角形都是此类题型). ------------------------ ...
- 蓝桥杯 算法训练 逗志芃的危机
蓝桥杯 算法训练 逗志芃的危机 题目描述 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 逗志芃又一次面临了危机.逗志芃的妹子是个聪明绝顶的人,相比之下逗志芃就很菜了.现在她妹子要和 ...
- 蓝桥杯算法训练合集十三 1.P06022.P07033.逗志芃的危机4.唯一的小可爱5.JOE的矩阵
目录 1.P0602 2.P0703 3.逗志芃的危机 4.唯一的傻子 5.JOE的矩阵 1.P0602 问题描述 编写一个程序,输入一个4位的自然数,将组成该数的各位数字重新排列,形成一个最大数和一 ...
- 蓝桥杯 算法训练 强力党逗志芃
蓝桥杯 算法训练 强力党逗志芃 题目描述 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 逗志芃励志要成为强力党,所以他将身上所以的技能点都洗掉了重新学技能.现在我们可以了解到,每个 ...
- 蓝桥杯算法训练 印章
蓝桥杯 算法训练 印章 问题描述 共有n种图案的印章,每种图案的出现概率相同.小A买了m张印章,求小A集齐n种印章的概率. 输入格式 一行两个正整数n和m 输出格式 一个实数P表示答案,保 ...
- 蓝桥杯 算法训练 Beaver's Calculator
蓝桥杯 算法训练 Beaver's Calculator 问题描述 从万能词典来的聪明的海狸已经使我们惊讶了一次.他开发了一种新的计算器,他将此命名为"Beaver's Calculator ...
- 蓝桥杯算法训练-24点(Python)
问题描述 24点游戏是一个非常有意思的游戏,很流行,玩法很简单:给你4张牌,每张牌上有数字(其中A代表1,J代表11,Q代表12,K代表13),你可以利用数学中的加.减.乘.除以及括号想办法得到24, ...
- 蓝桥杯算法训练-强力党逗志芃
持续更新蓝桥杯算法训练题解,有兴趣可以关注一波呀 题目 逗志芃励志要成为强力党,所以他将身上所以的技能点都洗掉了重新学技能.现在我们可以了解到,每个技能都有一个前提技能,只有学完了前提技能才能学习当前 ...
最新文章
- linux shell cgi post,linux下shell处理cgi的方法--post get
- mysql刷新连接_MYSQL频繁出现连接失败,刷新后正常的解决办法
- web报表移动端如何进行移动设备绑定与撤销
- SAP UI5 应用的中文乱码问题
- 算法学习——决策单调性优化DP
- I.Mx6 使用串口连接PSAM卡的注意事项
- mybatis 查询之神坑
- bash shell函数的定义及变量的简单说明
- 手动添加mysql服务
- AIR 窗口,自定义形状窗口,按钮
- Android渠道打包技术小结
- Python 变量 字符串 运算
- JQuery之拖拽插件
- mPaaS 小程序新手指南 | 《mPaaS 小程序自定义开发》
- 【观察】新华三大学:逆势而上,顺势而为,应势而变
- MySQL笔记4——SQL去重/笛卡尔积现象
- HTML网页设计结课作业~仿小米商城网站纯HTML模板源码(HTML+CSS)
- September 2006
- 破竹课堂-老A的杠杆术
- WebGIS期末复习
热门文章
- Julia: bug? = split ,isnumber
- Julia: SQLite库升级后的操作
- 为什么下一个十年的主战场在Serverless
- 成年人的21个规则,必须知道
- 英特尔开源技术中心招收Linux内核高手一名
- android设备离线授权方案,Android平台离线打包授权登陆插件配置
- 【元胞自动机】基于matlab激进策略元胞自动机三车道(开放辅路,软件园影响)交通流模型【含Matlab源码 1298期】
- 【优化调度】基于matlab改进的遗传算法求解风电场优化调度问题【含Matlab源码 1245期】
- 【优化算法】鸽群优化算法(PIO)【含Matlab源码 1077期】
- 【DVRP】基于matlab蚁群算法求解带距离的VRP问题【含Matlab源码 1040期】