P4746 C’s problem(c)
 
时间: 1000ms / 空间: 655360KiB / Java类名: Main

背景

冬令营入学测试

描述

题目描述

小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冬令营入学测试第三题)的更多相关文章

  1. 清北学堂2017NOIP冬令营入学测试P4745 B’s problem(b)

    清北学堂2017NOIP冬令营入学测试 P4745 B's problem(b) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试 描述 题目描 ...

  2. 清北学堂2017NOIP冬令营入学测试 P4744 A’s problem(a)

    清北学堂2017NOIP冬令营入学测试 P4744 A's problem(a) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试题,每三天结算 ...

  3. 清北学堂2017NOIP冬令营入学测试P4749 C’s problem(c)

    P4746 C's problem(c) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试 描述 题目描述 小C是一名数学家,由于它自制力比较差 ...

  4. 清北学堂2017NOIP冬令营入学测试P4749 F’s problem(f)

    时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试 描述 这个故事是关于小F的,它有一个怎么样的故事呢. 小F是一个田径爱好者,这天它们城市里正在 ...

  5. 清北学堂2017NOIP冬令营入学测试P4747 D’s problem(d)

    时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试题 描述 题目描述 小D是一名魔法师,它最喜欢干的事就是对批判记者了. 这次记者招待会上,记者对 ...

  6. 清北学堂入学测试P4751 H’s problem(h)

    P4751 H’s problem(h)  时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试 描述 小H是一个喜欢逛街的女孩子,但是由于上了大学 ...

  7. AC日记——Periodic RMQ Problem codeforces 803G

    G - Periodic RMQ Problem 思路: 题目给一段序列,然后序列复制很多次: 维护序列很多次后的性质: 线段树动态开点: 来,上代码: #include <cstdio> ...

  8. AC日记——A+B Problem(再升级) 洛谷 P1832

    题目背景 ·题目名称是吸引你点进来的 ·实际上该题还是很水的 题目描述 ·1+1=? 显然是2 ·a+b=? 1001回看不谢 ·哥德巴赫猜想 似乎已呈泛滥趋势 ·以上纯属个人吐槽 ·给定一个正整数n ...

  9. 清北学堂例题 LUOGU2519 【HAOI2011】PROBLEM A

    题目描述 一次考试共有n个人参加,第i个人说:“有ai个人分数比我高,bi个人分数比我低.”问最少有几个人没有说真话(可能有相同的分数) 输入格式 第一行一个整数n,接下来n行每行两个整数,第i+1行 ...

随机推荐

  1. angular单元测试与自动化UI测试实践

    关于本文:介绍通过karma与jsmine框架对angular开发的应用程序进行单元与E2E测试. angular单元测试与集成测试实践 先决条件 创建项目 webstorm中创建空白web项目 创建 ...

  2. js快捷输入日期

    点击这里查看效果http://keleyi.com/keleyi/phtml/jstexiao/10.htm 以下式代码: <!DOCTYPE html> <html> < ...

  3. js 把对象按照属性名的字母顺序进行排列

    var obj = {name: "zhangsan", age: 8, ace: 5, nbme: "lisi"};//要排序的对象function objK ...

  4. sass初级语法

    github地址:https://github.com/lily1010/sass/tree/master/course01 用到的sass语法是: sass --watch test.scss:te ...

  5. MySQL错误(一)

    Host 'localhost' is not allowed to connect to this MySQL server 手贱误操作将root用户删除,解决办法: 找到mysql的配置文件 my ...

  6. 关于在SharePoint 2013(2010)中Javascript如何实现批量批准的自定义操作功能?

    1.概述: SharePoint 2013(包括SharePoint 2010)提供了很方便的,多选的界面,但是很多操作还是不能批量进行,比如:批准的功能.如果您要解决方案不关心代码,那么请直接联系作 ...

  7. CSS的一些基础知识

    <!DOCTYPE html><html><head><meta charset="utf-8"><title>标题&l ...

  8. android 修改videoview的宽度和高度

    如果直接用android的videoview.他是不允许你随意的修改宽度和高度的,所以我们要重写videoview! package com.hysmarthotel.view; import and ...

  9. UIWebView保存网页中的图片(转载)

    现在H5混合原生开发的方式越来越流行,也就要用到UIWebView控件.在开发过程中,我们可能会遇到一个需求,要求我们保存网页上的图片,当用户点击图片的时候,就可以让用户选择是否下载图片. 在系统自带 ...

  10. SQL SERVER 2008数据库各版本功能对比

    微软SQL SERVER 2008数据库有6个版本,分别是数据中心版.企业版.标准版.Web版.工作组版.简易版,有时候购买的时候或需要使用某项功能时,需要了解各个版本的区别,功能差异,很多时候,大部 ...