【bzoj1263】[SCOI2006]整数划分 高精度
题目描述
从文件中读入一个正整数n(10≤n≤31000)。要求将n写成若干个正整数之和,并且使这些正整数的乘积最大。 例如,n=13,则当n表示为4+3+3+3(或2+2+3+3+3)时,乘积=108为最大。
输入
只有一个正整数: n (10≤n≤31000)
输出
第1行输出一个整数,为最大乘积的位数。 第2行输出最大乘积的前100位,如果不足100位,则按实际位数输出最大乘积。 (提示:在给定的范围内,最大乘积的位数不超过5000位)。
样例输入
13
样例输出
3
108
题解
高精度
首先根据某小学奥数理论,如果n%3==0,则全拆成3;如果n%3==1,则拆出来一个4,其余全拆成3;如果n%3==2,则拆出来一个2,其余全拆成3.
然后高精度乘低精度就好了。
由于有位数限制,所以比较懒没有压位,可能会慢点。
#include <cstdio>
#include <cstring>
struct data
{int len , num[5010];data(){len = 0 , memset(num , 0 , sizeof(num));}data operator=(const int a){len = 1 , num[0] = a;return *this;}data operator*(const int a)const{data t;int i;for(i = 0 ; i < len ; i ++ ) t.num[i] += num[i] * a , t.num[i + 1] += t.num[i] / 10 , t.num[i] %= 10;t.len = len + (bool)t.num[len];return t;}void output(){printf("%d\n" , len);int i;for(i = len - 1 ; i >= 0 && i >= len - 100 ; i -- ) printf("%d" , num[i]);printf("\n");}
}ans;
int main()
{int n , i;scanf("%d" , &n);ans = (n + 1) % 3 + 2;for(i = 1 ; i <= (n - 2) / 3 ; i ++ ) ans = ans * 3;ans.output();return 0;
}
转载于:https://www.cnblogs.com/GXZlegend/p/6670378.html
【bzoj1263】[SCOI2006]整数划分 高精度相关推荐
- bzoj 1263: [SCOI2006]整数划分
1263: [SCOI2006]整数划分 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 1449 Solved: 736 [Submit][Stat ...
- 大概是:整数划分||DP||母函数||递推
整数划分问题 整数划分是一个经典的问题. Input 每组输入是两个整数n和k.(1 <= n <= 50, 1 <= k <= n) Output 对于每组输入,请输出六行. ...
- C语言接收一个整数划分成5的倍数,整数划分为连续整数;整数划分
参考博客:http://www.cnblogs.com/nokiaguy/archive/2008/05/11/1192308.html 1.整数划分为连续整数: 如将15划分为连续整数之和: 15 ...
- 51nod 1201:整数划分 超级好的DP题目
1201 整数划分 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 收藏 关注 将N分为若干个不同整数的和,有多少种不同的划分方式,例如:n = 6,{6} { ...
- 算法笔记——整数划分1
题目来源:NYOJ90 问题描述: 将正整数n表示成一系列正整数之和:n=n1+n2+-+nk, 其中n1≥n2≥-≥nk≥1,k≥1. 正整数n的这种表示称为正整数n的划分.求正整数n的不 同划分个 ...
- Acwing900. 整数划分[计数类dp]:完全背包解法
文章目录 题目分析 完全背包解法 题目链接 题目分析 完全背包解法 请复习完全背包模板完全背包dp优化内有完整标准完全背包的推导过程 状态表示: f[i][j]f[i] [j]f[i][j] 表示从 ...
- 4.1 基础-放苹果(整数划分)
题目 题目描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法. 输入 每个用例包含二个整数M和N.0<=m ...
- hdu 5230(整数划分,dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5230 解题思路: 这是一个整数划分的模型: 将n划分为k个整数的划分数 设dp[i][j]为将i划分为 ...
- 整数划分递归相关问题
算法设计----整数划分递归相关问题 一.原问题 整数划分,是指把一个正整数n写成如下形式: 假设整数n,能被划分为i段n=a1+a2+...ai,其中ak为n中划分的最大整数(1<=ak< ...
最新文章
- Web攻防之XSS,CSRF,SQL注入
- iOS和android的屏幕适配
- QT+VTK 对接使用
- Tomcat几种启动报错及解决办法
- log4j 新建日志 重启_Java中log4j控制写入日志开关
- 麦克风阵列的同步性、一致性、峰值幅度、RMS、DC偏移
- html当当网上书店,当当网上书店案例代码+css+js+images
- 哈啰单车JAVA面经
- HIVE的基本使用05(HSQL调优)
- 概率图模型(05): 揭示局部概率模型, 稀疏化网络表示(Structured-CPDs)
- (附源码)node.js物资管理系统 毕业设计 071130
- Win11筛选键怎么关闭?Win11关闭筛选键的两种方法
- python实现KNN算法并可视化展示
- python爬取问卷星内容,Python 问卷星自动填写 爬虫
- mplfinance 一个堪称完美python量化金融可视化工具详析
- 吃货贴 | 「咸、甜、辣」如何影响肠道菌群?
- 绿化草皮铺装施工与套用定额
- 网页自动填表html,WebBrowser1.HtmlInput 实现浏览器文本自动填写与点击
- RTD2785T RTD2785R 2K eDP屏驱动芯片介绍
- 对话依图医疗总裁倪浩:AI 产品只是第一步,未来要和医院制定中国儿童骨龄新标准...
热门文章
- Flask和mysql多线程_Flask解析(二):Flask-Sqlalchemy与多线程、多进程
- java牛客排序算法题_《剑指offer》面试题28:字符串的排列(牛客网版本) java...
- linux查看有几个终端命令,如何知道你在 Linux 里最常使用的几个命令?
- java mysql 语句解析器_几种基于Java的SQL解析工具的比较与调用
- win10改成ubundu主题_如何将ubuntu引导win10,修改为win10引导ubuntu
- duilib设置滚动条自动滚动到底
- 操作系统上机作业--使用系统调用实现mycat
- 线性结构节点类型(三)
- php终止脚本执行(exit、die、return)
- python 二项分布_二项分布的理论基础、应用及Python实践