科技节编程大赛二等奖作品——凃讼林



姓名:凃讼林

用时:1小时30分钟




第一题

源代码

#include<stdio.h>

intx,y,m,n,L;

intmain(){

    int i;

   scanf("%d%d%d%d%d",&x,&y,&m,&n,&L);

    int Djump = n-m;

    if(Djump==0){/*由于规定了x不等于y,所以两只青蛙的跳跃长度一样就不可能相遇*/

        printf("impossible");

        return 0;

    }

    while(Djump<0)

        Djump+=L;

    int Dorigin = x - y;

    while(Dorigin<0)

        Dorigin+=L;

    printf("%d\n",Dorigin/Djump);

    return 0;

}

 

 

 

第二题

源代码

#include<stdio.h>

intA(int n);

intn;

intnum[26];

intmain(){

    int i;

    int result[0x7fff];

    memset(result,0,sizeof(result));

    int count = 0;

 

    scanf("%d",&n);

    while(n!=0){

        memset(num,0,sizeof(num));

        for(i = 0; i < n; i++)

            scanf("%d",&num[i]);

 

        int s = 1;

        int sum = 0;

        for(i = 0; num[i]!=0; i++){

            sum+=num[i];

            s *= A(num[i]);

        }

        result[count++]=A(sum)/s;

        scanf("%d",&n);

    }

    for(i = 0; i < count;i++)

        printf("%d\n",result[i]);

    return 0;

}

 

intA(int n){

    int i = 0;

    int s = 1;

    for(i = 1; i <= n; i++)

        s*=i;

    return s;

}

 

 

 

 

第三题

源代码

#include <stdio.h>

#define UNIT 50

int m[3];

int f(int n, int t);

int main(){

   m[2] = 7;

   m[1] = 4;

   m[0] = 3;

 

   int i;

   int n;

   int count = 0;

   scanf("%d",&n);

   int *result = (int*)malloc(sizeof(int)*n);

   for(i = 0; i < n; i++)

       result[i] = 0;

   for(i = 0; i < n; i++){

       int input;

       scanf("%d",&input);

       int alwaysTip = input % UNIT;

       input = (input-alwaysTip)/50;

       result[count++] = f(3,input) * UNIT + alwaysTip;

    }

   for(i = 0; i < count; i++)

       printf("%d\n",result[i]);

   free(result);

   return 0;

}

int f(int n, int t){

   if(n==0)

       return t;

   if(t==3||t==4||t==7)

       return 0;

   if(t-m[n-1]<0)

       return f(n-1,t);

   else{

       int useLast = f(n,t-m[n-1]);

       int notUseLast = f(n-1,t);

       return (useLast<notUseLast)?useLast:notUseLast;

    }

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值