【P1317】 低洼地
题目描述
一组数,分别表示地平线的高度变化。高度值为整数,相邻高度用直线连接。找出并统计有多少个可能积水的低洼地?
如图:地高变化为 0 1 0 2 1 2 0 0 2 0
输入格式
两行,第一行n,表示有n个数。第2行连续n个数表示地平线高度变化的数据,保证首尾为0。(3<=n<=10000,0<=高度<=1000)
输出格式
一个数,可能积水低洼地的数目。
输入输出样例
输入
10
0 1 0 2 1 2 0 0 2 0
输出
3
#include <stdio.h> int main() { int n, i, j,count = 0; scanf("%d", &n); int array[n]; for(i=1;i <= n;i++) { scanf("%d", &array[i]); } for(i=2;i<n;i++){ if(array[i]<array[i-1]){ j=1; } if(array[i]>array[i-1]&&j==1){ count++; j=0; } } printf("%d",count); return 0; }
【P1423 】小玉在游泳
题目描述
小玉开心的在游泳,可是她很快难过的发现,自己的力气不够,游泳好累哦。已知小玉第一步能游 22 米,可是随着越来越累,力气越来越小,她接下来的每一步都只能游出上一步距离的 98\%98%。现在小玉想知道,如果要游到距离 xx 米的地方,她需要游多少步呢。请你编程解决这个问题。
输入格式
输入一个实数 ss(单位:米),表示要游的目标距离。
输出格式
输出一个整数,表示小玉一共需要游多少步。
输入输出样例
输入
4.3
输出
3
说明/提示
数据保证,0 \leq s \leq 1000≤s≤100,且 ss 小数点后最多只有一位。
#include <stdio.h> int main() { float s; scanf("%f", &s); int x=0; float i = 2.0, sum = 0; while (s>sum) { sum=sum+i; i=i*0.98; x++; } printf("%d", x); return 0; }
【P2676】 [USACO07DEC]Bookshelf B
题目描述
Farmer John最近为奶牛们的图书馆添置了一个巨大的书架,尽管它是如此的大,但它还是几乎瞬间就被各种各样的书塞满了。现在,只有书架的顶上还留有一点空间。
所有 N(1 \le N \le 20,000)N(1≤N≤20,000) 头奶牛都有一个确定的身高 H_i(1 \le H_i \le 10,000)Hi(1≤Hi≤10,000)。设所有奶牛身高的和为S。书架的高度为B,并且保证 1 \le B \le S < 2,000,000,0071≤B≤S<2,000,000,007。
为了够到比最高的那头奶牛还要高的书架顶,奶牛们不得不像演杂技一般,一头站在另一头的背上,叠成一座“奶牛塔”。当然,这个塔的高度,就是塔中所有奶牛的身高之和。为了往书架顶上放东西,所有奶牛的身高和必须不小于书架的高度。
显然,塔中的奶牛数目越多,整座塔就越不稳定,于是奶牛们希望在能够到书架顶的前提下,让塔中奶牛的数目尽量少。 现在,奶牛们找到了你,希望你帮她们计算这个最小的数目。
输入格式
第 11 行: 2 个用空格隔开的整数:NN 和 BB;
第 2\dots N+12…N+1 行: 第 i+1i+1 行是 11 个整数:H_iHi。
输出格式
第 11 行: 输出 11 个整数,即最少要多少头奶牛叠成塔,才能够到书架顶部
输入输出样例
输入
6 40
6
18
11
13
19
11
输出
3
说明/提示
输入说明:
一共有 66 头奶牛,书架的高度为 4040,奶牛们的身高在 6\dots196…19之间。
输出说明:
一种只用 33 头奶牛就达到高度 4040 的方法:18+11+1318+11+13。当然还有其他方法,在此不一一列出了。
#include <stdio.h> int main() { int n, s, i, j, sum = 0, x, count = 0; scanf("%d %d", &n, &s); int array[20050]; for (i = 1; i <= n; i++) { scanf("%d", &array[i]); } for (i = 0; i < n; i++) { for (j = i + 1; j <= n; j++) { if (array[i] < array[j]) { x = array[i]; array[i] = array[j]; array[j] = x; } } } for (i = 0; i < n; i++) { sum = sum + array[i]; count++; if (sum >= s) { break; } } printf("%d\n", count); }