/ Vijos / 题库 /

分金币

分金币

时间限制:1秒  内存限制:256M


【题目描述】

  土老财偶然间赚了\(n\)枚金币,由于赚的太容易了,所以打算尽快花光所有金币。他可以自己保留一部分,然后把剩余的金币在若干天内平均分给他的两个儿子。

  首先,他选择一个非负整数\(k(0≤k≤N)\),先把k枚金币留给自己。剩下的\(n-k\)枚金币将在\(d\)天内分给两个儿子。当然土老财也可以选择不给儿子们分,这对应于\(n=k\)且\(d=0\)的情况。

  如果进行分金币,则每天的分配方式是:两个儿子当天得到相同数目的金币。如果某天大儿子得到\(x\)枚金币,那么小儿子也得到\(x\)枚金币,其中\(x\)必须是正整数。总的来说,每个儿子获得的总金额必须相同。

  两种分配方案被视为不同,当且仅当满足以下条件中的至少一条:
   ◆选择的\(k\)不同;
   ◆天数\(d\)不同;
   ◆存在至少一天,儿子们当天获得的金额不同,即每日支付金额的序列不完全相同。

  你的任务是计算土老财可以分配金币的不同方案数,输出结果对109+7取模后的值。

【输入格式】

  第一行包含一个自然数\(n(1≤n≤10^{18})\),即题目中所述的金币数量。

【输出格式】

  输出一个整数,表示土老财分配金币的不同方案数。

【输入输出样例1】

 Input

4

 Output

4

【样例1说明】

  土老财共有n=4枚金币,考虑所有可能的k值:
  ◆k=4时:土老财留下所有金币,儿子们没有收到金币,这是一种分配方案。
  ◆k=2时:剩余2枚金币需要分。唯一可行的是d=1,即每个儿子得到1枚金币。
  ◆k=0时:剩余4金币需要分。存在两种可行的分配方案:
   d=1时:每个儿子得到2枚金币;
   d=2时:每天每个儿子得到1枚金币。
  ◆k=1和k=3时:剩余金币无法平均分配。
  所以,总共有 1+1+2=4 种不同的分配方案。

【输入输出样例2】

 Input

5

 Output

4

【输入输出样例3】

 Input

793

 Output

137435472

【测试点性质】

说明

【来源】

  Mr.he

信息

ID
3269
难度
9
分类
模拟 | 动态规划 | 组合数学 | 其他 | 快速幂 点击显示
标签
(无)
递交数
1
已通过
1
通过率
100%
被复制
2
上传者