每日一练--(陶陶摘苹果)(n边形划分)

每日一练--(陶陶摘苹果)(n边形划分)_第1张图片

不定期分享自己编程的学习代码,更多的点击主页。点点关注。 

题目名称:陶陶摘苹果  

时间限制:1000ms内存限制:256M

题目描述

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

输入描述:

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

输出描述:

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

示例 

输入100 200 150 140 129 134 167 198 200 111 110

输出 5

解题思路:

通过阅读题目,我们知道,简而言之就是比较一个数和数组里面的数比较大小。这里,数组就要用到for (int i = 0; i < 10; i++),我们知道arr[i]表示数组里面的数,然后我们用result自增就可以了。

数组(Array)是一种用来存储同一种类型的集合,是一种有序的线性结构表。并且数组元素的地址是连续的。

数组最大的优点就是支持随机访问,当想访问数组的某个数时,只需要找到数组的对应下标就可以直接找到该数组对应元素。但是数组也有相应的缺点,那就是数组的元素个数和数组空间大小在创建时就已经被固定死了,如果数组的空间没有使用完也会造成空间浪费,并且因为数组的地址是连续的,这本应该是一个优点的,但是这导致数组在进行删除或增加元素时需要O(n)才能完成。

数组的下标

数组下标是从0开始的,假设,访问arr[5]元素时,访问的是数组的第6个元素,访问arr[0]时,访问的是数组的第一个元素。

今天我们主要了解一下一维数组就可以了,二维数组下次碰到了再说。

一维数组是常见的数组,创建方法是:数据类型 + 数组名 [ 元素个数 ];

1

int arr[10];

C99的标准之前,当数组在创建时,方括号内的数组元素个数只能是常量,使用的常量也必须是真正意义上的常量,比如用const修饰的变量有了常属性,但不是真正意义的常量,而由define定义的常量可以用来做数组元素个数。而C99之后数字方括号内的元素可以使用变量,而使用变量的做数组元素个数的数组,叫做变长数组。

#include 


int solution(int m, int arr[10]){
    int result=0;
    for (int i = 0; i < 10; i++)
    {
        if (arr[i]<=m+30)
        {
            result++;
        }
    }
    
    return result;
}


int main() {

    
    int arr[10];
    for (int i = 0; i < 10; i++)
    {
        scanf("%d", &arr[i]);
    }
        
    int m;
    scanf("%d", &m);

    int result = solution(m, arr);

    printf("%d", result);

    return 0;
}

题目名称:n边形划分

时间限制:1000ms内存限制:256M

题目描述

已知存在n多边形,n为奇数。 连接多边形所有对角线。 能形成多少区域。

输入描述:

给定整数n。(1<=n<=1e9)

输出描述:

输出区域数,对1e9+7取模

示例 

输入5

输出11

代码如下,在本地运行没有问题,不晓得为什么通过不了编译。如果大家有更好的可以在评论区留下你的回答。 

#include 


int solution(int m){
    int result;
if (m%2==0)
    result=0;
else result=((m-1)*(m-2)*(m*m-3*m+12))/24;// TODO: 请在此编写代码

    return result;
}


int main() {

    int m;
    scanf("%d", &m);

    int result = solution(m);

    printf("%d", result);

    return 0;
}

在这里我在放一个python的解法。

n=input();
n=eval(n);
n=n*n*n*n-6*n*n*n+23*n*n-42*n+24;
n=n//24;
print(n);

其实,这个和编程题联系不大,有点想奥数的感觉。

你可能感兴趣的:(每日一练,算法,c++,蓝桥杯)