PAT Basic 1060
Posted yxp400
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAT Basic 1060相关的知识,希望对你有一定的参考价值。
1060 爱丁顿数
英国天文学家爱丁顿很喜欢骑车。据说他为了炫耀自己的骑车功力,还定义了一个“爱丁顿数” E ,即满足有 E 天骑车超过 E 英里的最大整数 E。据说爱丁顿自己的 E 等于87。
现给定某人 N 天的骑车距离,请你算出对应的爱丁顿数 E(≤N)。
输入格式:
输入第一行给出一个正整数 N (≤10?5??),即连续骑车的天数;第二行给出 N 个非负整数,代表每天的骑车距离。
输出格式:
在一行中给出 N 天的爱丁顿数。
输入样例:
10
6 7 6 9 3 10 8 2 7 8
输出样例:
6
题解:这道题看上去不难,其实理解是要有一点功夫的o(╥﹏╥)o,E并不一定出现在给出的数组中,需要我们自己用一个计数器的方式去求出来。将数据从大到小排序后,只要满足a[i]>i,就继续计数,直到不满足条件为止。
代码如下:
1 #include<iostream> 2 #include<algorithm> 3 using namespace std; 4 5 bool cmp( const int &a, const int &b){ 6 return a > b; 7 } 8 9 int main() 10 { 11 int n, ans = 0; 12 scanf("%d",&n); 13 int a[n]; 14 for( int i = 0; i < n; i++) scanf("%d",&a[i]); 15 sort(a,a+n,cmp); 16 for( int i = 0; i < n; i++){ 17 if( a[i] > i+1 ){ 18 ans++; 19 } 20 else 21 break; 22 } 23 printf("%d",ans); 24 return 0; 25 }
以上是关于PAT Basic 1060的主要内容,如果未能解决你的问题,请参考以下文章