AC日记——C’s problem(c) TYVJ P4746 (清北学堂2017冬令营入学测试第三题)
背景
冬令营入学测试
描述
题目描述
小C是一名数学家,由于它自制力比较差,经常通宵研究数学问题。
这次它因为这个数学问题已经两天两夜没有睡觉了,再不研究出来就要出人命了!快帮帮它吧!
这个问题是这样的,有一个数n,将其拆分成若干自然数之和,要求乘积最大!
如果你以为问题仅仅这么简单,那你就太naive了。
由于小C挑战自己的自我修养,它规定分成的自然数两两之间一定不能相等!
它请你输出这个乘积最大是多少,但这个答案太大了,小C并没有兴趣看那么长的数字,它只想知道这个数对1000000007取模后的值是多少。
输入格式
一行一个数表示n
输出格式
一个数表示答案
备注
输入样例
6
输出样例
8
数据范围
对于30%的数据n<=10。
对于50%的数据n<=10000。
对于100%的数据1<=n<=1000000000。
哈,今天下午想了一节政治课,原来这个题这么水。。
思路:
很简单的思路..但是需要我们认真分析一下
我们先看一下规律
1=>1
2=>2
3=>3
4=>4
从5开始,就不等于它本身了
5=>2*3=5
6=>2*4=8
7=>3*4=12
8=>3*5=15
9=>2*3*4=24
10=>2*3*5=30
11=>2*4*5=40
12=>3*4*5=60
13=>3*4*6=72
14=>2*3*4*5=120
看出规律了吧
嗯嗯。
如果你继续往下读,相信你也没看出来—.—
我们可以发现n分解出的数都是从2或者3开始往后一次加
第i个数和两边的数最大相差不过是2
然后n每次增加1
它里面的数总有一个要加1
或者是最大的一个数被分解成2和max_a-1
9=>2*3*4
9里面的数是挨个的
现在给9+1=10,则
10=>2*3*5
9里面的4被加了1
现在给10+1成为11,则
11=>2*4*5
10里面的3+1成为4
现在给11+1=12,则
12=>3*4*5
11里的最小的数2给加了1成为3
再给12+1=13,则
13=>3*4*6
12里的5+1成为6
在给13+1,则
14=2*3*4*5
应该是13里的4+1成为5,但是,这个却是6+1=7,7再被分解成2+5
所以,这个规律就显而易见了
把当前已经分解的k个数从第一个到第k个遍历
如果ai[i+1]-a[i]>0
则ai[i]++
然后,如果这个ai[1]!=2
那么就是ai[k]++
直到ai[k]可以分解为2,和一个大于ai[k-1]的数
不断循环的这个过程,知道求出n的最优分解的数
现在你可以去写代码了
但是,如果你真的按这个思路写了个大模拟
超时稳稳的
所以,你要自己优化一下
来,上代码:
#include <cstdio>
#include <iostream> #define mod 1000000007 using namespace std; int num,now= ; long long int ai[],n,ans= ; int main()
{
cin>> n;
if(n<)
{
cout<< n << endl;
return ;
}
while(now<=n)
{
ai[++num]= now;
n-= now;
now++;
}
while(n>=num+)
{
n-= num+;
ai[++num]= ++now;
}
for(int i=num;i>=&&n>;i--)
{
ai[i]+= ;
n--;
}
if(n>)
{
ai[num]+=n;
}
for(int i=;i<=num;i++)
{
ans=(ans*ai[i])%mod;
}
cout<< ans << endl;
return ;
}
AC日记——C’s problem(c) TYVJ P4746 (清北学堂2017冬令营入学测试第三题)的更多相关文章
- 清北学堂2017NOIP冬令营入学测试P4745 B’s problem(b)
清北学堂2017NOIP冬令营入学测试 P4745 B's problem(b) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试 描述 题目描 ...
- 清北学堂2017NOIP冬令营入学测试 P4744 A’s problem(a)
清北学堂2017NOIP冬令营入学测试 P4744 A's problem(a) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试题,每三天结算 ...
- 清北学堂2017NOIP冬令营入学测试P4749 C’s problem(c)
P4746 C's problem(c) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试 描述 题目描述 小C是一名数学家,由于它自制力比较差 ...
- 清北学堂2017NOIP冬令营入学测试P4749 F’s problem(f)
时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试 描述 这个故事是关于小F的,它有一个怎么样的故事呢. 小F是一个田径爱好者,这天它们城市里正在 ...
- 清北学堂2017NOIP冬令营入学测试P4747 D’s problem(d)
时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试题 描述 题目描述 小D是一名魔法师,它最喜欢干的事就是对批判记者了. 这次记者招待会上,记者对 ...
- 清北学堂入学测试P4751 H’s problem(h)
P4751 H’s problem(h) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试 描述 小H是一个喜欢逛街的女孩子,但是由于上了大学 ...
- AC日记——Periodic RMQ Problem codeforces 803G
G - Periodic RMQ Problem 思路: 题目给一段序列,然后序列复制很多次: 维护序列很多次后的性质: 线段树动态开点: 来,上代码: #include <cstdio> ...
- AC日记——A+B Problem(再升级) 洛谷 P1832
题目背景 ·题目名称是吸引你点进来的 ·实际上该题还是很水的 题目描述 ·1+1=? 显然是2 ·a+b=? 1001回看不谢 ·哥德巴赫猜想 似乎已呈泛滥趋势 ·以上纯属个人吐槽 ·给定一个正整数n ...
- 清北学堂例题 LUOGU2519 【HAOI2011】PROBLEM A
题目描述 一次考试共有n个人参加,第i个人说:“有ai个人分数比我高,bi个人分数比我低.”问最少有几个人没有说真话(可能有相同的分数) 输入格式 第一行一个整数n,接下来n行每行两个整数,第i+1行 ...
随机推荐
- ipsec IP安全策略操作 win7
//禁止 win7 连接 public static void BannedWINRunCmd() { string str = Console.ReadLine(); System.Diagnost ...
- 疯狂Android讲义 - 学习笔记(三)
Android的事件处理 3.1 Android提供了两套事件处理机制:基于监听的事件处理.基于回调的事件处理. 3.2 基于监听的事件处理 3.2.1 监听的处理模型 主要涉及三类对象:Event ...
- Home / Python MySQL Tutorial / Calling MySQL Stored Procedures in Python Calling MySQL Stored Procedures in Python
f you are not familiar with MySQL stored procedures or want to review it as a refresher, you can fol ...
- hdu-2063-二分图最大匹配
过山车 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- spice server dpkg-buildpackage 打包编译备忘
一般我们会通过configure,make 编译.但是为了替换版本的方便需要把他编译成deb的包,而且还需要自定义下包名.下面就记录下我的修改过程. 注:前面关于spice server的编译过程掠过 ...
- Matlab 之 字符串数组查找
Matlab的优势在于向量操作,字符串操作往往费时费力,但是如果能充分利用Matlab自带的一些函数,也可以取得不错的效果.下面就介绍一下字符串数组查找的小技巧. 字符串数组我通常会选择应用cell格 ...
- DDD开发框架ABP之动态Web API层
建立动态Web API 控制器 ASP.NET Boilerplate 能够自动为您的应用层产生Web API层.比如说我们有如下的一个应用服务: public interface ITaskAppS ...
- Hibernate(十)__缓存机制
为什么需要缓存? 缓存的作用主要用来提高性能,可以简单的理解成一个Map: 使 用缓存涉及到三个操作:把数据放入缓存.从缓存中获取数据. 删除缓存中的无效数据. 从上图看出: 当我们去查询对象的时候, ...
- 各大互联网公司前端面试题(HTML/CSS)
Html篇: 1.你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么? IE: trident内核 Firefox:gecko内核 Safari:webkit内核 Opera:以前是presto ...
- FIJ Jobs - 150316
Department Vacancies Total Skill Set Experience Language Oracle; OBIEE 3years English Systems Sr. So ...