第11关 - 2018学年DL小学GoC比赛

373.讲台 (2018学年DL小学GoC比赛 第1题)

题目描述

小C学了一年的GoC,今天终于要进考场了。小C发现考场是一个教室,教室的讲台是一个长方形,长是200,宽是100,讲台的四个角都有一个边长是20的正方形小孔,如下图所示:

image.png

题解

void sbx(int a, int b)
{
    for(int i=0;i<2;i++)
        p.fd(a).rt(90).fd(b).rt(90);
}
int main() {
    p.fd(100).rt(90); sbx(20,20);
    p.fd(200).rt(90); sbx(20,20);
    p.fd(100).rt(90); sbx(20,20);
    p.fd(200).rt(90); sbx(20,20);
    
    return 0;
 }

374.成绩 (2018学年DL小学GoC比赛 第2题)

题目描述

N个学生参加本次考试,本次考试满分300分,考试结束后每个学生都有一个分数。对于每个学生,你都要画一个长方形,长方形的宽度是20,高度是学生的分数。为了使得画出的图形不挨在一起,我们规定相邻的两个长方形之间间隔的距离是20。不过,为了使得学生之间的分数差距太大,老师规定:凡是低于60分的会修正为60分,凡是高于250分的会修正为250分。

输入格式 第一行,一个整数N。 1 <= N <= 10。

第二行,N个整数,第i个整数表示第i个学生的得分。得分范围是[0,300]。

输出格式 共N个长方形。

输入/输出例子1

输入:

5

20 60 150 250 280

输出:

image.png

题解

int main() {
    int  n,a;
    cin >> n;
    for (int i=0; i<n; i++)
    {
        cin >> a;
        if (a<60) a=60;
        if(a>250) a=250;
        p.fd(a).rt(90).fd(20).rt(90);
        p.fd(a).rt(90).fd(20).rt(90);
        p.rt(90).up().fd(40).lt(90).down();
    }
    
    return 0;
 }

375.跑步 (2018学年大沥镇小学GoC比赛 第3题)

题目描述

小C和小P在操场跑步,操场是一个宽度是300高度是200的长方形开始小C的位置在操作左下角的点,小P的位置在操场右下角的点。两人都是逆时针跑步。小C的速度是每秒前进X,小P的速度是每秒前进Y,其中X > Y,所以只要两人跑步的时间足够多,小C肯定能追上小P。你的任务是:

1、画出宽度是300高度是200的长方形。

2、以小C第一次追上小P的位置点作为圆心,画一个半径是15的实心圆,圆的颜色是1号颜色。

输入格式 一行,两个整数: X和Y。 1 <= Y < X <= 200。

数据保证:小C一定能在整数秒内追上小P,本题不需要用到实数。

输出格式 相应的图形。

输入/输出例子1

输入:

40 10

输出:

image.png

题解

int main() {
    int x,y,s;
    cin >> x >>y;
    p.fd(200).rt(90).fd(300).rt(90);
    p.fd(200).rt(90).fd(300).rt(90);
    s=300/(x-y);
    s=s*x%1000;
    p.rt(90);
    if (s<300)
        p.fd(s);
    else {
        p.fd(300).lt(90);
        if (s<500){
            p.fd(s-300);
        }else {
            p.fd(200).lt(90);
            if (s<800)
                p.fd(s-500);
            else {
                p.fd(300).lt(90);
                p.fd(s-800);
            }
        }
    }
    p.oo(15,1);
    return 0;
 }

376.放大镜 (2018学年大沥镇小学GoC比赛 第4题)

题目描述

小C想画一个超级放大镜。画放大镜就是先画一条向上的线段作为放大镜的柄,然后再画一个实心圆作为放大镜的镜片。输入数据给出N个正整数。柄的线段宽度是10,长度是给出的N个正整数之中的最小值,柄的颜色是6号颜色。镜片的半径是N个整数之中的最大值,镜片的颜色是8号颜色。

输入格式 第一行,一个整数N。 1 <= N <= 20。

第二行,N个正整数,每个正整数的范围:[10,100]。

输出格式 相应的放大镜图形。

输入/输出例子1

输入:

5

70 90 100 80 60

输出:

image.png

题解

int main() {
    int n,max,min,x;
    max=0; min=10000;
    cin >>n;
    for (int i=0; i<n; i++)
    {
        cin >>x;
        if (x>max) max=x;
        if (x<min) min=x;
    }
    p.c(6).size(10).fd(min);
    p.fd(max).c(8).oo(max);
    p.hide();
    return 0;
 }

378.找规律 (2018学年大沥镇小学GoC比赛 第5题)

题目描述

有一个序列: 1 2 4 7 11 16 ……

按照这个规律,序列的第N项是什么?

假设序列的第N项是X,那么你的任务是:以X % 16为颜色号,画一个半径是50的实心圆。

输入格式 一个整数N。 1 <= N <= 2000。

输出格式 相应的实心圆

输入/输出例子1

输入:

3

输出:

image.png

输入/输出例子2

输入:

120

输出:

image.png

题解


int main() {
    int n,x;
    x=1;
    cin >> n;
    for(int i=0;i<n;i++)
    {
        x=x+i;
    }
    p.oo(50,x%16);
    p.hide();
    return 0;
 }

377.落珠 (2018学年大沥镇小学GoC比赛 第6题)

题目描述

有N块木板,编号1至N,第i块木板的长度是L[i],所有木板的长度都不相同。这N块木板从上往下是横放的,木板的左端点都是靠左对齐,上下相邻两块木板的距离是20,第1块木板在最上面,第N块木板在最下面。例如: N = 5, 5块木板的长度依次是: 100、70、120、30、150,那么对应的图形是:

image.png 有一颗珠子,一开始在最上方的木板的最右边,然后垂直下落,一直掉到某一块木板上被拦住,然后珠子朝该木板的右边滚动,然后又开始垂直下落,一直重复这个过程,直到珠子滚动到第N块木板的最右边才停止。如下图所示,红色的线条是珠子下落和滚动的轨迹:

image.png

你的任务是:画出珠子下落的轨迹,即红色的线条。

输入格式 第一行,一个整数N。 1 <= N <= 10。

第二行,N个正整数,第i个正整数是L[i]。10 <= L[i] <= 250。所有L[i]互不相同。

输出格式

相应的下落轨迹。

输入/输出例子1

输入:

7

30 100 70 100 120 30 150

输出:

image.png

题解

int main() {
    int n, a[20];
    cin >> n;
    for(int i=0;i<n;i++)
        cin >>a[i];
    int x=a[0];
    p.c(1).rt(180);
    for(int i=1;i<n;i++){
        p.fd(20);
        if (a[i]>x)     
       {
            p.lt(90).fd(a[i]-x).rt(90);
            x=a[i];
        }
    } 
    p.hide();
    return 0;
 }