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. Spring Boot中静态资源(JS, 图片)等应该放在什么位置

    Spring Boot的静态资源,比如图片应该放在什么位置呢, 如果你放在传统WEB共的类似地方, 比如webapp或者WEB-INF下,你会得到一张示意文件未找到的破碎图片.那应该放哪里呢? 百度一 ...

  2. 【JAVA并发编程实战】8、锁顺序死锁

    package cn.study.concurrency.ch10; public class Account { private String staffAccount; //账号 private ...

  3. 完全卸载mysql步骤

    (1) 开始-MySQL-MySQL Server 5.1-MySQL Server Instance Config Wizard--->Remove Instance. (2)点击[开始]-- ...

  4. ATM跨行取款的清算方式

    ATM跨行取款和POS机是类似的,因为没有商户参与,所以不需要收单清算,过程更为简单. 回到文章最开头的例子:你拿着一张工行卡去建行的ATM取了100元,这个跨行业务在CNAPS体系中的过程如下: 你 ...

  5. JavaScript通过元素id和name直接获取元素的方法

    概览: 偶然的机会,我在JavaScript中直接用HTML元素的id属性来获取该元素,并设置该元素的其他属性值,竟然能够正确解析不报错!于是我去查阅相关资料,也有其他同行这么用. 虽然说这种用法不是 ...

  6. Aspose.Words基本操作

    一个非常好用的控件. 基本的操作可以参考伍大神的文章: http://www.cnblogs.com/wuhuacong/archive/2012/08/30/2662961.html 在这里补充四点 ...

  7. IOS开发基础知识--碎片37

    1:iOS 使用NJKWebViewProgress做webview进度条 引入头文件: #import "NJKWebViewProgressView.h" #import &q ...

  8. 【Swift】iOS 9 Core Spotlight

    前言 感觉 Spotlight 这个功能还是蛮有用的,能提升用户活跃,增加应用内容曝光几率. 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com 农民伯伯: ...

  9. IOS RunLoop浅析 一

    RunLoop犹如其名循环. RunLoop 中有多重模式. 在一个“时刻”只能值执行一种模式. 因此在使用RunLoop时要注意所实现的效果有可能不是你想要的. 在这里用NSTimer展示一下Run ...

  10. IOS开发之Bug--使用xib的自动布局和代码中修改遇到的bug

    首先,在xib中约束了宽高22,但是需要代码动态重设,所以一开始如下设置,但是实际显示的仍然是22,而不是重设的值: 然后直接拿xib的将布局约束对象拖线重新通过代码重设约束值,虽然打印的结果宽高值是 ...