三国佚事——巴蜀之危

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

话说天下大势,分久必合,合久必分。。。却道那魏蜀吴三国鼎力之时,多少英雄豪杰以热血谱写那千古之绝唱。古人诚不我欺,确是应了那句“一将功成万骨枯”。
是夜,明月高悬。诸葛丞相轻摇羽扇,一脸愁苦。原来是日前蜀国战事吃紧,丞相彻夜未眠,奋笔急书,于每个烽火台写下安排书信。可想,这战事多变,丞相运筹 帷幄,给诸多烽火台定下不同计策,却也实属不易。
谁成想这送信小厮竟投靠曹操,给诸葛丞相暗中使坏。这小厮将每封书信都投错了烽火台,居然没有一封是对的。不多时小厮便被抓住,前后之事却也明朗。这可急坏了诸葛丞相,这书信传错,势必会让蜀军自乱阵脚,不攻自破啊! 诸葛丞相现在想知道被这小厮一乱,这书信传错共有多少种情况。

Input

     题目有多组数据,处理到文件结尾,丞相共写了n(1 <= n <= 20)封书信,输入一个正数n。

Output

     输出书信传错的情况数。

Sample Input

1
3
6

Sample Output

0
2
265

 #include <stdio.h>
#include <stdlib.h>
int main()
{
    int n,i;
   long long  int a[21];
    while(scanf("%d",&n)!=EOF)
    {
        a[1]=0;
        a[2]=1;
        for(i=3;i<=n;i++)
        {
            a[i]=(i-1)*(a[i-1]+a[i-2]);
        }
        printf("%lld\n",a[n]);
    }
    return 0;
}

错排公式。
养兔子

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

一对成熟的兔子每天能且只能产下一对小兔子,每次都生一公一母,每只小兔子的成熟期是1天,小兔子出生后隔一天才能再生小兔子。第一天某人领养了一对成熟的兔子,一公一母,请问第N天以后,他将会得到多少对兔子。

Input

测试数据包括多组,每组一行,为整数n(1≤n≤90)。
输入以0结束。

Output

对应输出第n天有几对兔子(假设没有兔子死亡现象,而且是一夫一妻制)。

Sample Input

1
2
0

Sample Output

1
2

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int n,i;
   long long  int a[100];
    while(scanf("%d",&n)&&n!=0)
    {
        a[1]=1;
        a[2]=2;
        for(i=3;i<=n;i++)
        {
            a[i]=a[i-1]+a[i-2];
        }
        printf("%lld\n",a[n]);
    }
    return 0;
}

C语言实验——拍皮球

Time Limit: 1000 ms Memory Limit: 65536 KiB

Submit Statistic

Problem Description

小瑜3岁了,很喜欢玩皮球,看来今后喜欢打篮球的^_^。最近她发现球从手中落下时,每次落地后反跳回原高度的一半,再落下,每次球落地时数球跳了几次,数到n次时爸爸在边上喊停,问小瑜现在球到底总共走了多少距离,小瑜故作沉思状,爸爸又问接下来小球能跳多高啊,小瑜摇摇头,心想还没跳我怎么知道啊,难道爸爸是神啊!这时的你在边上出主意想给小瑜写个程序计算一下,因此任务就交给你啦!假设球的初始高度为h,计算第n次落地时球经过的距离,以及落地后反弹能有多高。

Input

输入数据有多组,第一行为数据的组数t,下面t行为t组数据,每行有两个数h和n,分别用空格分隔。

Output

输出第n次反弹时球经过的距离和球最后的高度,保留小数点后2位。

Sample Input

2
100 1
100.0 2

Sample Output

100.00 50.00
200.00 25.00

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int t,n,i,j;
    double h;
    double a[1000];
    double b[1000];
    while(scanf("%d",&t)!=EOF)
    {
       for(i=1;i<=t;i++)
       {
           scanf("%lf %d",&h,&n);
           a[1]=h/2.0;
           b[1]=h;
           for(j=2;j<=n;j++)
           {
               a[j]=a[j-1]/2.0;
               b[j]=b[j-1]+2*a[j-1];
           }
           printf("%.2lf %.2lf\n",b[n],a[n]);


       }
    }
    return 0;
}