金橘杯参考例程及解析

发布于 2021-09-20  250 次阅读


A题:童照昕说这是一道简单的签到题

你的任务是先输入一个n,之后有m行a和b,计算每一行的a+b。

#include<stdio.h>
int main(){
    int n,ta,tb;
    scanf("%d",&n);
    int i;
    int res[20];
    for (i=1;i<=n;i++){
        scanf("%d%d",&ta,&tb);
        res[i-1]=ta+tb;
    }
    for(i=0;i<n;i++){
        printf("%d\t",res[i]);
    }
}

B题: 童照昕出的B题也太难了叭他喵的

找出1000-9999之间的回文数。
从左向右读与从右向左读是同一个数的数为回文数,如19391是回文数。

#include<stdio.h>
int main(){
   int i;
   int a,b,c,d;
   for (i=1000;i<=9999;i++){
       d=i%10;
       c=i/10%10;
       b=i/100%10;
       a=i/1000;
       if(a==d&&b==c){
           printf("%d ",i);
       }
   }
}

C题 童照昕说这个题是压轴题。~

数学家童照昕曾说过:
一个数如果恰好等于它的各因子(该数本身除外)子和,如:6=3+2+1,则称其为“完数”;
若因子之和大于该数,则称其为“盈数”。求出2 到60 之间所有“完数”和“盈数”,并以如
下形式输出: E: e1 e2 e3 ......(ei 为完数) G: g1 g2 g3 ......(gi 为盈数)

#include<stdio.h>
int main(){
    int y[61],w[60];
    int i,j;
    for (i=2;i<=60;i++){
        int temp[60];
        int n=0,sum=0;
        for (j=1;j<i;j++){
            if(i%j==0){
                temp[n]=j;
                n++;
            }
        }
        for(j=0;j<n;j++){
            sum=sum+temp[j];
        }
        y[i]=sum;
    }
    printf("E: ");
    for (i=2;i<=60;i++){
        if(y[i]==i){
            printf("%d ",i);    
        }
    }
    printf("G: ");
    for (i=2;i<=60;i++){
        if(y[i]>i){
            printf("%d ",i);    
        }
    }
}

D题:你以为这是压轴题?我偏不!(数列求和哦)

有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13...... 求出这个数列的前N项之和,保留两位小数。

#include<stdio.h>
int main() {
    double sum=2;
    int f1=2,f2=1;
    int i;
    for(i=0;i<9;i++){
        f1=f1+f2;
        f2=f1-f2;
        sum=sum+(f1*1.0)/(f2*1.0);
    }
    printf("%.2lf",sum);
    return 0;
}

E题 经济学陈学姐给通信田学弟的一个换钱的计划

一个学经济学的陈学姐,给脑子不太好使的学通信工程的田某订了一个计划
该计划如下:
陈曦每天给田某10万元,田某第一天给陈曦1分钱,第二天2分钱,第三天4分钱……这样交换30天后,
带经济学家陈曦交出了多少钱?
田某交出了多少钱?(注意一个是万元,一个是分)

#include <stdio.h>
int main()
{
    long sum, n;
    int i;
    sum = 0;
    n = 1;
    for(i = 0; i < 30; i++)
    {
        sum += n;
        n *= 2;
    }
    printf("%ld %ld\n", sum / 100, 10*10000*30);
    return 0;
}

F题 大家都要学童照昕的好习惯

童照昕有个好习惯:无论如何都要记日记。

他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210

后来人们知道,那个整数就是日期,它表示那一天是童照昕出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?

 童照昕出生于:1777年4月30日。

在童照昕发现的一个重要定理的日记上标注着:5343,因此可算出那天是:1791年12月15日。

 童照昕脱单的那天日记上标着:8271  

请你算出脱单的年月日。

注意:童照昕出生的那天为第一天,如如果天数为3,则日期是1777-5-2

#include<stdio.h>

int main()
{
    printf("1799-12-21\n");
    return 0;
} 

不会写珂朵莉树的废柴ACMer