暑假集训第二周——递推 献给杭电五十年校庆的礼物

D - 献给杭电五十周年校庆的礼物
Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u
Submit  Status

Description

或许你曾经牢骚满腹 
或许你依然心怀忧伤 
或许你近在咫尺 
或许你我天各一方 

对于每一个学子 
母校 
永远航行在 
生命的海洋 

今年是我们杭电建校五十周年,这是一个值得祝福的日子。我们该送给母校一个怎样的礼物呢?对于目前的大家来说,最好的礼物当然是省赛中的好成绩,我不能参赛,就送给学校一个DOOM III球形大蛋糕吧,这可是名牌,估计要花掉我半年的银子呢。 

想象着正式校庆那一天,校长亲自操刀,把这个大蛋糕分给各地赶来祝贺的校友们,大家一定很高兴,呵呵,流口水了吧... 

等一等,吃蛋糕之前先考大家一个问题:如果校长大人在蛋糕上切了N刀(校长刀法极好,每一刀都是一个绝对的平面),最多可以把这个球形蛋糕切成几块呢? 

做不出这个题目,没有蛋糕吃的! 
为-了-母-校-,为-了-蛋-糕-(不是为了DGMM,枫之羽最会浮想联翩...),加-油-! 
 

Input

输入数据包含多个测试实例,每个实例占一行,每行包含一个整数n(1<=n<=1000),表示切的刀数。 
 

Output

对于每组输入数据,请输出对应的蛋糕块数,每个测试实例输出一行。 
 

Sample Input

      
      
      
      
1 2 3
 

Sample Output

      
      
      
      
2 4 8


分析


本题有两个递推公式,在一个平面上切n刀可以把平面分成个g[n]=g[n-1]+n;


类推到立方体里可以把一个立方体分成f[n]=f[n-1]+g[n-1];

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include<stdio.h>
#include<math.h>
int g(int n)
{
    if(n==1)
        return 2;
    else
        return g(n-1)+n;
}
int f(int n)
{
    if(n==1)
        return 2;

    else
        return f(n-1)+g(n-1);
}

int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        printf("%d\n",f(n));
    }
    return 0;
}

E - 献给杭电五十周年校庆的礼物
Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u
Submit  Status

Description

在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法。请你编程序计算出共有多少种兑法。
 

Input

每行只有一个正整数N,N小于32768。
 

Output

对应每个输入,输出兑换方法数。
 

Sample Input

      
      
      
      
2934 12553
 

Sample Output

      
      
      
      
718831 13137761

分析


首先有3分的硬币的情况有n/3+1种

从0个开始循环看2分的有(n-3*i)/2种

3分的个数,二分的个数都确定了,一分的就也确定了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<stdio.h>
int main()
{

    int i,k,n;
    while(scanf("%d",&n)!=EOF)
    {
        int s=n/3+1;
        for(k=0; k<=n/3; k++)
        {
            i=(n-3*k)/2;
            s+=i;
        }
        printf("%d\n",s);
    }
    return 0;
}

你可能感兴趣的:(递推)