yy一下发现好像越小越好...分解成3*3*3*3……这种形式是最好的...然后就是高精度了

---------------------------------------------------------------------------------

#include<bits/stdc++.h>
 
using namespace std;
 
struct INT {
static const int MAXN = 8000;
int s[MAXN], N;
INT(int _N = 0) {
N = _N;
memset(s, 0, sizeof s);
}
INT operator * (const INT &o) {
INT ret(N + o.N - 1);
for(int i = 0; i < N; i++)
   for(int j = 0; j < o.N; j++)
       ret.s[i + j] += s[i] * o.s[j];
for(int i = 0; i < ret.N; i++) if(ret.s[i] > 9) {
   ret.s[i + 1] += ret.s[i] / 10;
   ret.s[i] %= 10;
}
for(; ret.s[ret.N]; ret.N++) if(ret.s[ret.N] > 9) {
ret.s[ret.N + 1] += ret.s[ret.N] / 10;
ret.s[ret.N] %= 10;
}
return ret;
}
INT operator = (int x) {
for(N = 0; x; x /= 10) s[N++] = x % 10;
return *this;
}
INT operator = (const INT &o) {
N = o.N;
for(int i = 0; i < N; i++) s[i] = o.s[i];
return *this;
}
INT operator *= (const INT &o) {
return (*this = *this * o);
}
void read() {
N = 0;
char c = getchar();
for(; !isdigit(c); c = getchar());
for(; isdigit(c); c = getchar()) s[N++] = c - '0';
for(int l = 0,r = N - 1; l < r; l++, r--) swap(s[l], s[r]);
}
void write() {
printf("%d\n", N);
int t = N, cnt = 0;
for(; cnt < 100 && t--; cnt++)
   printf("%d", s[t]);
}
} N;
 
INT power(INT x, int k) {
INT ans; ans = 1;
for(; k; k >>= 1) {
if(k & 1) ans *= x;
x *= x;
}
return ans;
}
 
int main() {
int n; scanf("%d", &n);
int t = n / 3;
if(n % 3 == 1) t--;
N = 3;
N = power(N, t);
if(3 * t < n) {
   INT T; T = n - 3 * t;
   (T * N).write();
} else 
   N.write();
return 0;
}

---------------------------------------------------------------------------------

1263: [SCOI2006]整数划分

Time Limit: 1 Sec  Memory Limit: 162 MB
Submit: 907  Solved: 452
[Submit][Status][Discuss]

Description

从文件中读入一个正整数n(10≤n≤31000)。要求将n写成若干个正整数之和,并且使这些正整数的乘积最大。 例如,n=13,则当n表示为4+3+3+3(或2+2+3+3+3)时,乘积=108为最大。

Input

只有一个正整数: n (10≤n≤31000)

Output

第1行输出一个整数,为最大乘积的位数。 第2行输出最大乘积的前100位,如果不足100位,则按实际位数输出最大乘积。 (提示:在给定的范围内,最大乘积的位数不超过5000位)。

Sample Input

13

Sample Output

3
108

HINT

Source

BZOJ 1263: [SCOI2006]整数划分( 高精度 )的更多相关文章

  1. bzoj 1263 [SCOI2006]整数划分

    n >= 6 的时候减3, 最后分类讨论, 上个Java import java.math.BigInteger; import java.util.*; public class Main { ...

  2. 【bzoj1263】[SCOI2006]整数划分 高精度

    题目描述 从文件中读入一个正整数n(10≤n≤31000).要求将n写成若干个正整数之和,并且使这些正整数的乘积最大. 例如,n=13,则当n表示为4+3+3+3(或2+2+3+3+3)时,乘积=10 ...

  3. BZOJ1263 [SCOI2006]整数划分 高精度

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1263 题意概括 将n写成若干个正整数之和,并且使这些正整数的乘积最大. 例如,n=13,则当n表示 ...

  4. BZOJ1263: [SCOI2006]整数划分

    1263: [SCOI2006]整数划分 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 677  Solved: 332[Submit][Status] ...

  5. [BZOJ1263][SCOI2006]整数划分(数学+高精度)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1263 分析:数学老师上课讲过啦= =,就是尽可能3越多越好.然后就写个高精度就行了.

  6. bzoj1263: [SCOI2006]整数划分(高精度+构造)

    第一次写压位高精度只好抄黄学长的 代码最后一段想了好久一看评论区才知道黄学长写错了= =很气 自己最后改对了T^T 这题最优是一直划分3出来直到<=4 #include<iostream& ...

  7. bzoj 3612 [Heoi2014]平衡——整数划分(dp)

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3612 因为力矩的缘故,变成了整数划分. 学习到了整数划分.就是那个图一样的套路.https: ...

  8. bzoj 3612: [Heoi2014]平衡【整数划分dp】

    其实就是-n~n中求选k个不同的数,和为0的方案数 学到了新姿势叫整数划分,具体实现是dp 详见:https://blog.csdn.net/Vmurder/article/details/42551 ...

  9. 大概是:整数划分||DP||母函数||递推

    整数划分问题 整数划分是一个经典的问题. Input 每组输入是两个整数n和k.(1 <= n <= 50, 1 <= k <= n) Output 对于每组输入,请输出六行. ...

随机推荐

  1. mysql xtrabackup 备份恢复实现,mysql命令备份数据库,打包压缩数据库

    简介 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具.特点: (1)备份过程快速.可靠 ...

  2. JS中的内存泄漏

    明天下午面试微店的前端开发职位,有点紧张~~ 刚刚正好看到js中的内存泄露,所以来整理一番. 给DOM对象添加的属性是对一个js对象的引用. var MyObject = {}; document.g ...

  3. JS 寻找孩子并打印路径

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. Understanding and Selecting a SIEM/LM: Correlation and Alerting

    Continuing our discussion of core SIEM and Log Management technology, we now move into event correla ...

  5. Flex XML搜索、匹配

    - <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx=" ...

  6. Flex 自定义事件

    一.分派自定义事件类型 任何实现flash.event.IEventDispatcher接口的对象都可以分派事件,这包括所有显示对象和一些非显示对象类.通常,对于 自定义的非显示类,可以通过扩展fla ...

  7. STL之set和multiset(集合)

    set和multiset会根据特定的排序准则,自动将元素进行排序.不同的是后者允许元素重复而前者不允许. constructing sets #include #include using names ...

  8. PHPExcel 生成图形报表

    db.php为数据库操作类, $config为数据库配置,PHPExcel版本为PHPExcel_1.8.0,  PHP代码: $dir = dirname(__FILE__); require $d ...

  9. linux 下dd命令直接清除分区表(不用再fdisk一个一个的删除啦)

    分区表是硬盘的分区信息,要删除一个硬盘的所有分区表很麻烦的,需要fdisk一个一个的删除,其实dd命令可直接清除分区信息,当然,这也是linux给root用户留下的作死方法之一.dd 命令主要参数如下 ...

  10. 再次复习数据结构:c语言链表的简单操作

    最近呢,又要面临多次的数据结构与算法方面的试题了,而我呢,大概也重新温习c语言的基本要点快一个月了,主要是针对指针这货的角度在研究c语言,感觉又学到了不少. 现在c指针感觉知道点了,也就匆忙开展数据结 ...