评论

收藏

[R语言] 母牛的故事 蟠桃记 考新郎

编程语言 编程语言 发布于:2021-07-31 13:15 | 阅读数:460 | 评论:0

母牛的故事
Time Limit: 1000 ms Memory Limit: 65536 KiB
Submit Statistic
Problem Description
有一对夫妇买了一头母牛,它从第2年起每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?
Input
输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0< n< 55),n的含义如题目中描述。 n=0表示输入数据的结束,不做处理。
Output
对于每个测试实例,输出在第n年的时候母牛的数量。 每个输出占一行。
Sample Input
2
4
5
0
Sample Output
2
4
6
#include <stdio.h>
#include <stdlib.h>
int main()
{
  int a[60];
  int n,i;
  while(scanf("%d",&n)&&n!=0)
  {
    a[1]=1;
    a[2]=2;
    a[3]=3;
    a[4]=4;
    for(i=5;i<=n;i++)
    {
      a[i]=a[i-1]+a[i-3];
    }
    printf("%d\n",a[n]);
  }
  return 0;
}
蟠桃记
Time Limit: 1000 ms Memory Limit: 65536 KiB
Submit Statistic
Problem Description
孙悟空在大闹蟠桃园的时候,第一天吃掉了所有桃子总数一半多一个,第二天又将剩下的桃子吃掉一半多一个,以后每天吃掉前一天剩下的一半多一个,到第n天准备吃的时候只剩下一个桃子。这下可把神仙们心疼坏了,请帮忙计算一下,第一天开始吃的时候一共有多少个桃子?
Input
输入数据有多组,每组占一行,包含一个正整数n(1≤n≤30),表示只剩下一个桃子的时候是在第n天发生的。
输入以0结束。
Output
对于每组输入数据,输出第一天开始吃的时候桃子的总数,每个测试实例占一行。
Sample Input
2
4
0
Sample Output
4
22
#include <stdio.h>
#include <stdlib.h>
int main()
{
  int a[100];
  int n,i;
  while(scanf("%d",&n)&&n!=0)
  {
    a[n]=1;
    for(i=n-1;i>=1;i--)
    {
      a[i]=(a[i+1]+1)*2;
    }
    printf("%d\n",a[1]);
  }
  return 0;
}
考新郎
Time Limit: 1000 ms Memory Limit: 32768 KiB
Submit Statistic
Problem Description
在一场盛大的集体婚礼中,为了使婚礼进行的丰富一些,司仪临时想出了有一个有意思的节目,叫做”考新郎”,具体的操作是这样的:
首先,给每位新娘打扮得几乎一模一样,并盖上大大的红盖头随机坐成一排;
然后,让各位新郎寻找自己的新娘.每人只准找一个,并且不允许多人找一个.
最后,揭开盖头,如果找错了对象就要当众跪搓衣板…
看来做新郎也不是容易的事情…
假设一共有N对新婚夫妇,其中有M个新郎找错了新娘,求发生这种情况一共有多少种可能.
Input
输入数据的第一行是一个整数C,表示测试实例的个数,然后是C行数据,每行包含两个整数N和M(1 < M <= N <= 20)
Output
对于每个测试实例,请输出一共有多少种发生这种情况的可能,每个实例的输出占一行。
Sample Input
2
2 2
3 2
SampleOutput
1
3
#include <stdio.h>
#include <stdlib.h>
int main()
{
  int c,m,n,i,j;
  long long int a[1000];
  scanf("%d",&c);
  for(i=1; i<=c; i++)
  {
    scanf("%d %d",&n,&m);
    long long int sum1=1,sum2=1,sum;
    for(j=1; j<=n-m; j++)
    {
      sum1=sum1*j;
    }
    for(j=m+1; j<=n; j++)
    {
      sum2=sum2*j;
    }
    sum=sum2/sum1;
    a[1]=0;
    a[2]=1;
    for(j=3; j<=m; j++)
    {
      a[j]=(j-1)*(a[j-1]+a[j-2]);
    }
    printf("%lld\n",sum*a[m]);
  }
  return 0;
}

关注下面的标签,发现更多相似文章