蟠桃记

蟠桃记

时间: 1ms        内存:64M

描述:

孙悟空在大闹蟠桃园的时候,第一天吃掉了所有桃子总数一半多一个,第二天又将剩下的桃子吃掉一半多一个,以后每天吃掉前一天剩下的一半多一个,到第n天准备吃的时候只剩下一个桃子。这下可把神仙们心疼坏了,请帮忙计算一下,第一天开始吃的时候桃子一共有多少个桃子。

输入:

输入数据有多组,每组占一行,包含一个正整数n(1≤n≤30),表示只剩下一个桃子的时候是在第n天发生的。
输入以0结束。

输出:

对于每组输入数据,输出第一天开始吃的时候桃子的总数,每个测试实例占一行。

示例输入:

2
4
0

示例输出:

4
22

提示:

参考答案(内存最优[748]):

#include<stdio.h>
int main()
{
   int n,i,m,sum;
   while(scanf("%d",&n)!=EOF&&n!=0){
	   m=1;sum=1;
	   for(i=n;i>1;i--){
	   sum=(m+1)*2;
	   m=sum;
	   }
   printf("%d\n",sum);
   }
   return 0;
}

参考答案(时间最优[0]):

#include <stdio.h>
  struct Student
    {
        char num[203];
        char name[20];
        int score[3];
        float  a;
    };
int main()
{
    int y;
    void input(struct Student  stu1[],int x);
    void output(struct Student stu[],int x);
    struct Student stu[100],*p=stu;
    scanf("%d",&y);
    input(p,y);
    output(p,y);
    return 0;
}
void input(struct Student stu[],int x)
 {
    int i;
    int a1=0,a2=0,a3=0;
    for(i=0;i<x;i++)
    {
    scanf("%s%s%d%d%d",stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
    stu[i].a=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2]);
    a1+=stu[i].score[0];
    a2+=stu[i].score[1];
    a3+=stu[i].score[2];
    }
    printf ("%d %d %d\n",a1/x,a2/x,a3/x);
    }
void output(struct Student stu[],int x)
    {
        int i,m=0;
        for(i=1;i<x;i++)
        if(stu[i].a>stu[m].a) m=i;

        printf("%s %s %d %d %d",stu[m].num,stu[m].name,stu[m].score[0],stu[m].score[1],stu[m].score[2]);
    }

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注