P1046 陶陶摘苹果

题目描述

陶陶家的院子里有一棵苹果树,每到秋天树上就会结出 10 个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个 30 厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。
现在已知 10 个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。

输入格式

输入包括两行数据。第一行包含 10 个 100 到 200 之间(包括 100 和 200 )的整数(以厘米为单位)分别表示 1010 个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。第二行只包括一个 100 到 120 之间(包含 100 和 120 )的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。

输出格式

输出包括一行,这一行只包含一个整数,表示陶陶能够摘到的苹果的数目。

输入输出样例

输入

100 200 150 140 129 134 167 198 200 111
110

输出

5

说明/提示

NOIP2005 普及组第一题

#include "stdio.h"
int main()
{
    int a[10] = {0}, x, y = 0;
    for (int i = 0; i < 10; i++)
        scanf("%d", &a[i]);
    scanf("%d", &x);
    for (int i = 0; i < 10; i++)
    {
        if (a[i] <= x + 30)
            y++;
    }
    printf("%d", y);
    return 0;
}


P1047 校门外的树

题目描述

某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,…,L,都种有一棵树。
由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。

输入格式

第一行有22个整数 L(1≤L≤10000) 和 M(1≤M≤100),L代表马路的长度,M代表区域的数目,L和M之间用一个空格隔开。
接下来的M行每行包含2个不同的整数,用一个空格隔开,表示一个区域的起始点和终止点的坐标。

输出格式

1个整数,表示马路上剩余的树的数目。

输入输出样例

输入

500 3
150 300
100 200
470 471

输出

298
说明/提示
NOIP2005普及组第二题

对于20%的数据,区域之间没有重合的部分;

对于其它的数据,区域之间有重合的情况。
一开始没想明白。。。借鉴的代码

#include "stdio.h"
int main()
{
    int a[10010], b, c, d, e, f=0;
    scanf("%d%d", &b, &c);
    for (int i = 0; i <= b; i++)
    {
        a[i] = 1;//把有树的标记上
    }
    for (int j = 0; j <= c - 1; j++)
    {
        scanf("%d%d", &d, &e);
        for (int k = d; k <= e; k++)
        {
            a[k] = 0;//被砍的记得改为0
        }
    }
    for (int l = 0; l <= b; l++)
    {
        if (a[l] == 1)
            f++;//统计剩余的树
    }
    printf("%d", f);
    return 0;
}


P1427 小鱼的数字游戏

题目描述

小鱼最近被要求参加一个数字游戏,要求它把看到的一串数字(长度不一定,以0结束,最多不超过100个,数字不超过2^32-1),记住了然后反着念出来(表示结束的数字0就不要念出来了)。这对小鱼的那点记忆力来说实在是太难了,你也不想想小鱼的整个脑袋才多大,其中一部分还是好吃的肉!所以请你帮小鱼编程解决这个问题。

输入格式

一行内输入一串整数,以0结束,以空格间隔。

输出格式

一行内倒着输出这一串整数,以空格间隔。

输入输出样例

输入

3 65 23 5 34 1 30 0

输出

30 1 34 5 23 65 3

#include "stdio.h"
int main()
{
    int a[101],i;
    for (i = 0;; i++)
    {
        scanf("%d", &a[i]);
        if (a[i] == 0)
            break;
    }
    for (i=i-1; i >= 0; i--)
    {
        printf("%d ", a[i]);
    }
    return 0;
}


P1428 小鱼比可爱

题目描述

人比人,气死人;鱼比鱼,难死鱼。小鱼最近参加了一个“比可爱”比赛,比的是每只鱼的可爱程度。参赛的鱼被从左到右排成一排,头都朝向左边,然后每只鱼会得到一个整数数值,表示这只鱼的可爱程度,很显然整数越大,表示这只鱼越可爱,而且任意两只鱼的可爱程度可能一样。由于所有的鱼头都朝向左边,所以每只鱼只能看见在它左边的鱼的可爱程度,它们心里都在计算,在自己的眼力范围内有多少只鱼不如自己可爱呢。请你帮这些可爱但是鱼脑不够用的小鱼们计算一下。

输入格式

第一行输入一个整数 nn,表示鱼的数目。
第二行内输入 nn 个整数,用空格间隔,依次表示从左到右每只小鱼的可爱程度。

输出格式

行内输出 nn 个整数,用空格间隔,依次表示每只小鱼眼中有多少只鱼不如自己可爱。

输入输出样例

输入

6
4 3 0 5 1 2

输出

0 0 0 3 1 2

说明/提示

对于 100% 的数据,n≤100。

#include "stdio.h"
int main()
{
    int n, a[101], b[101] = {0}, i, j, out = 0;
    scanf("%d", &n);//输入鱼的数目
    for (i=0; i < n; i++)
        scanf("%d", &a[i]);
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < i; j++)
        {
            if (a[i] > a[j])
                b[i]++;
        }
    }
    for(i=0;i<n;i++)
        printf("%d ", b[i]);
    return 0;
}


P2141 珠心算测验

题目描述

珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术。珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及。
某学校的珠心算老师采用一种快速考察珠心算加法能力的测验方法。他随机生成一个正整数集合,集合中的数各不相同,然后要求学生回答:其中有多少个数,恰好等于集合中另外两个(不同的)数之和?

最近老师出了一些测验题,请你帮忙求出答案。

(本题目为2014NOIP普及T1)

输入格式

共两行,第一行包含一个整数nn,表示测试题中给出的正整数个数。

第二行有nn个正整数,每两个正整数之间用一个空格隔开,表示测试题中给出的正整数。

输出格式

一个整数,表示测验题答案。

输入输出样例

输入

4
1 2 3 4

输出

2

说明/提示

【样例说明】
由1+2=3,1+3=4,故满足测试要求的答案为2。
注意,加数和被加数必须是集合中的两个不同的数。

【数据说明】

对于100%的数据,3≤n≤100,测验题给出的正整数大小不超过10,000。

#include "stdio.h"
int main()
{
    int n, a[101], flag[101] = {0}, i, j, out = 0;
    scanf("%d", &n);
    for (i=0; i < n; i++)
        scanf("%d", &a[i]);
    for (i = 0; i < n; i++)
    {
        for (j = i+1; j < n; j++)
        {
            for (int k = 0; k < n; k++)
            {
                if (a[i] + a[j] == a[k] && k != i && k != j&&flag[k]==0)
                {
                    out++;
                    flag[k] = 1;
                }

            }
        }
    }
    printf("%d",out);
    return 0;
}


P1567 统计天数

题目描述

炎热的夏日,KC 非常的不爽。他宁可忍受北极的寒冷,也不愿忍受厦门的夏天。最近,他开始研究天气的变化。他希望用研究的结果预测未来的天气。
经历千辛万苦,他收集了连续 N(1≤N≤10^6)的最高气温数据。
现在,他想知道最高气温一直上升的最长连续天数。

输入格式

第 1 行:一个整数 N。 1 ≤ N ≤ 10^6
第 2 行:N个空格隔开的整数,表示连续 N 天的最高气温。0≤ 最高气温 ≤10^9。

输出格式

1 行:一个整数,表示最高气温一直上升的最长连续天数。

输入输出样例

输入

10
1 2 3 2 4 5 6 8 5 9

输出

5

#include "stdio.h"
int main()
{
    long int N, a[10000001] = {0}, z = 1, out = 1;
    scanf("%ld", &N);
    for (int i = 0; i < N; i++)
        scanf("%ld", &a[i]);
    for (int i = 0; i < N; i++)
    {
        if (z > out)
            out = z;
        if (a[i] > a[i - 1])
            z++;
        else
            z = 1;
    }
    printf("%ld", out);
    return 0;
}

最后修改:2020 年 03 月 18 日
如果觉得我的文章对你有用,请随意赞赏