PAT 乙级 1060 爱丁顿数(25) C++版

1060. 爱丁顿数(25)

时间限制
250 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue

英国天文学家爱丁顿很喜欢骑车。据说他为了炫耀自己的骑车功力,还定义了一个“爱丁顿数”E,即满足有E天骑车超过E英里的最大整数E。据说爱丁顿自己的E等于87。

现给定某人N天的骑车距离,请你算出对应的爱丁顿数E(<=N)。

输入格式:

输入第一行给出一个正整数N(<=105),即连续骑车的天数;第二行给出N个非负整数,代表每天的骑车距离。

输出格式:

在一行中给出N天的爱丁顿数。

输入样例:
10
6 7 6 9 3 10 8 2 7 8
输出样例:
6

其实刚开始看到这题给我的感觉是难度怎么会有0.2???不应该很简单吗???但结果真的让人无奈,要考虑的太多了

接下来我就说几个样例
1
1
0(不是1)

5
10 9 8 7 6
5

5
10 9 8 7 5
4

4
5 5 5 5
4

6
5 5 5 5 5 5
4


代码如下
 1 // 1060.cpp : 定义控制台应用程序的入口点。
 2 //
 3 
 4 #include "stdafx.h"
 5 #include<iostream>
 6 #include<vector>
 7 #include<algorithm>
 8 
 9 using namespace std;
10 
11 int main()
12 {
13     vector<int> v;
14 
15     int N,num,j=0;
16 
17     cin >> N;
18 
19     for (int j = 0; j < N; j++)
20     {
21         cin >> num;
22         v.push_back(num);
23     }
24 
25     vector<int>::reverse_iterator ri, rbegin = v.rbegin(), rend = v.rend();
26     int size = v.size();
27 
28     sort(rbegin, rend);//对进入向量内的元素进行排序,大的在前面
29 
30     if (v[0] == v[size - 1] && size > 1 && v[0] > 1)//处理全部相等且个数大于1和数值大于1
31         cout << v[0] - 1 << endl;
32     else if (v[0] == v[size - 1] && v[0] <= 1)//处理全为0或者全为1的情况
33         cout << 0 << endl;
34     else if (v[size - 1] > size)//所有的值都大于总天数
35         cout << size << endl;
36     else if (v[size - 1] == size)//最小数等于总天数
37         cout << size-1 << endl;
38     else//一般情况
39     {
40         for (j = 0; j<size; j++)
41         {
42             if (j + 1 > v[j] && v[j - 1] != v[j])
43                 break;
44             else
45                 continue;
46         }
47 
48         cout << v[j-1]-1 << endl;
49 
50     }
51 
52     return 0;
53 }

 

转载于:https://www.cnblogs.com/cdp1591652208/p/7220196.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值