题目名称:陶陶摘苹果
时间限制: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 <stdio.h> 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 <stdio.h> 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);
其实,这个和编程题联系不大,有点想奥数的感觉。