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. sql where传入类型不同,造成查询结果差异问题

    话说故事是这样的.请听小生慢慢道来: 原有数据样式如下: 正常结果: 问题展现: 此问题主要原因如下: 以下皆可在官网中找到: 为数据类型从高到低依次:(ps:小生用翻译工具翻译,就不在此献丑了) 根 ...

  2. Java--设计模式心得体会

    1.策略模式: 策略模式就是将能够通用的算法,封装成不同的组件,实现同一个接口,使之可以互换. 例子:SpringMVC的9大组件,都采用策略模式.比如HandlerMethodArgumentRes ...

  3. 小议jQuery插件开发

    1.写在前面: 大家都知道PHP专注后台与数据库的交互,前端页面中是js的天下,而jQuery作为使用最广泛,最简单有效的js的框架.深受大家的喜欢. 而js作为一门面向对象的开发语言,它独特的语法和 ...

  4. Java基础学习 -- 接口

    interface是一种特殊的class 接口是纯抽象类 所有的成员函数都是抽象函数: 所有的成员变量都是public static final; 接口是为了方便类的调用 一个类如果要去实现某个接口, ...

  5. GIT 基本操作

    git 流程:1.查看自己所在分支 git branch 2.切换到开发分支 git checkout develop3.把代码拉下来 git fetch4.合并到自己本地 git merge5.切换 ...

  6. form表单提交和ajax表单提交,关于移动端如何通过软键盘上的【搜索】和【前进】进行提交操作

    [文章来源]由于自己对于form研究甚少,所以一直用的都是AJAX进行提交,这次后台提出要用form提交,顺便深入研究一下:之前在做表单的时候,发现input可以通过设置不同的type属性,调用不同的 ...

  7. jQuery弹出关闭遮罩层

    效果体验:http://keleyi.com/keleyi/phtml/jquery/9.htm 完整代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XH ...

  8. ios页面过渡效果插件Kontext

    效果体验:http://keleyi.com/keleyi/phtml/html5/28.htm 以下是代码: <!doctype html> <html> <head& ...

  9. Cordova中使用gulp

    打开package.json,添加main:gulpfile.js     在dependencies中添加gulp,vs2015十分智能,可以智能从npm中获取依赖如下图:     在添加过程中注意 ...

  10. Android源码中内置包含so文件的APK文件

    方法一: 在packages/apps下面以需要预置的APK名字创建文件夹,以预置一个名为Test的APK为例 将Test.apk放到packages/apps/Test下面 在packages/ap ...