solution.md 4.2 KB
Newer Older
每日一练社区's avatar
每日一练社区 已提交
1
# 错误票据
F
fix bug  
feilong 已提交
2

3
**问题描述**
F
fix bug  
feilong 已提交
4

每日一练社区's avatar
每日一练社区 已提交
5 6 7 8
某涉密单位下发了某种票据,并要在年终全部收回。

每张票据有唯一的ID号。全年所有票据的ID号是连续的,但ID的开始数码是随机选定的。

每日一练社区's avatar
每日一练社区 已提交
9
因为工作人员疏忽,在录入ID号的时候发生了一处<span style="color:red">错误</span>,造成了某个ID断号,另外一个ID重号。
每日一练社区's avatar
每日一练社区 已提交
10 11 12 13 14

你的任务是通过编程,找出断号的ID和重号的ID。

假设断号不可能发生在最大和最小号。

15
**输入格式**
F
fix bug  
feilong 已提交
16

每日一练社区's avatar
每日一练社区 已提交
17 18 19 20 21 22 23 24
要求程序首先输入一个整数N(N<100)表示后面数据行数。

接着读入N行数据。

每行数据长度不等,是用空格分开的若干个(不大于100个)正整数(不大于100000),请注意行内和行末可能有多余的空格,你的程序需要能处理这些空格。

每个整数代表一个ID号。

25
**输出格式**
F
fix bug  
feilong 已提交
26

每日一练社区's avatar
每日一练社区 已提交
27 28 29 30
要求程序输出1行,含两个整数m n,用空格分隔。

其中,m表示断号ID,n表示重号ID

31
**样例输入1**
F
fix bug  
feilong 已提交
32

每日一练社区's avatar
每日一练社区 已提交
33 34 35 36 37
```
2
5 6 8 11 9
10 12 9
```
每日一练社区's avatar
每日一练社区 已提交
38

39
**样例输出1**
F
fix bug  
feilong 已提交
40

每日一练社区's avatar
每日一练社区 已提交
41 42 43
```
7 9
```
每日一练社区's avatar
每日一练社区 已提交
44

45
**样例输入2**
F
fix bug  
feilong 已提交
46

每日一练社区's avatar
每日一练社区 已提交
47 48 49 50 51 52 53 54 55
```
6
164 178 108 109 180 155 141 159 104 182 179 118 137 184 115 124 125 129 168 196
172 189 127 107 112 192 103 131 133 169 158
128 102 110 148 139 157 140 195 197
185 152 135 106 123 173 122 136 174 191 145 116 151 143 175 120 161 134 162 190
149 138 142 146 199 126 165 156 153 193 144 166 170 121 171 132 101 194 187 188
113 130 176 154 177 120 117 150 114 183 186 181 100 163 160 167 147 198 111 119
```
每日一练社区's avatar
每日一练社区 已提交
56

57
**样例输出2**
F
fix bug  
feilong 已提交
58

每日一练社区's avatar
每日一练社区 已提交
59 60 61 62
```
105 120
```

每日一练社区's avatar
每日一练社区 已提交
63
以下选项<span style="color:red">错误</span>的是?
每日一练社区's avatar
每日一练社区 已提交
64

每日一练社区's avatar
每日一练社区 已提交
65
## aop
F
fix bug  
feilong 已提交
66

每日一练社区's avatar
每日一练社区 已提交
67
### before
F
fix bug  
feilong 已提交
68

每日一练社区's avatar
每日一练社区 已提交
69
```c
每日一练社区's avatar
每日一练社区 已提交
70
#include <bits/stdc++.h>
每日一练社区's avatar
每日一练社区 已提交
71 72
using namespace std;
```
每日一练社区's avatar
每日一练社区 已提交
73

每日一练社区's avatar
每日一练社区 已提交
74
### after
F
fix bug  
feilong 已提交
75

每日一练社区's avatar
每日一练社区 已提交
76
```c
每日一练社区's avatar
每日一练社区 已提交
77 78 79 80

```

## 答案
F
fix bug  
feilong 已提交
81

每日一练社区's avatar
每日一练社区 已提交
82
```c
每日一练社区's avatar
每日一练社区 已提交
83
int a[100000];
每日一练社区's avatar
每日一练社区 已提交
84 85
int main()
{
每日一练社区's avatar
每日一练社区 已提交
86 87
    int i, n, count = 0, k;
    char ch;
每日一练社区's avatar
每日一练社区 已提交
88 89
    cin >> n;
    getchar();
每日一练社区's avatar
每日一练社区 已提交
90 91

    for (;;)
每日一练社区's avatar
每日一练社区 已提交
92
    {
每日一练社区's avatar
每日一练社区 已提交
93 94 95 96 97 98 99
        cin >> k;
        a[k]++;
        ch = getchar();
        if (ch == '\n')
            count++;
        if (count == n)
            break;
每日一练社区's avatar
每日一练社区 已提交
100
    }
每日一练社区's avatar
每日一练社区 已提交
101
    for (i = 1; i < 10000; i++)
每日一练社区's avatar
每日一练社区 已提交
102
    {
每日一练社区's avatar
每日一练社区 已提交
103 104 105 106
        if (a[i - 1] != 0 && a[i + 1] != 0 && a[i] == 0)
            cout << i << " ";
        if (a[i] == 2)
            cout << i + 1 << " " << endl;
每日一练社区's avatar
每日一练社区 已提交
107 108 109 110 111
    }
}
```
## 选项

F
fix bug  
feilong 已提交
112

每日一练社区's avatar
每日一练社区 已提交
113
### A
F
fix bug  
feilong 已提交
114

每日一练社区's avatar
每日一练社区 已提交
115
```c
每日一练社区's avatar
每日一练社区 已提交
116 117 118 119 120 121 122 123 124
int convert(string s)
{
    stringstream str;
    int ex;
    str << s;
    str >> ex;
    return ex;
}

每日一练社区's avatar
每日一练社区 已提交
125 126
int main()
{
每日一练社区's avatar
每日一练社区 已提交
127 128 129
    int line;
    cin >> line;
    vector<int> a;
每日一练社区's avatar
每日一练社区 已提交
130
    getchar();
每日一练社区's avatar
每日一练社区 已提交
131 132

    for (int i = 0; i < line; i++)
每日一练社区's avatar
每日一练社区 已提交
133
    {
每日一练社区's avatar
每日一练社区 已提交
134 135 136 137 138 139
        string s;
        getline(cin, s);
        stringstream str(s);
        string s2;

        while (getline(str, s2, ' '))
每日一练社区's avatar
每日一练社区 已提交
140
        {
每日一练社区's avatar
每日一练社区 已提交
141 142 143
            int ex;
            ex = convert(s2);
            a.push_back(ex);
每日一练社区's avatar
每日一练社区 已提交
144 145
        }
    }
每日一练社区's avatar
每日一练社区 已提交
146 147 148 149

    int result1, result2;
    sort(a.begin(), a.end());
    for (int i = 1; i < a.size(); i++)
每日一练社区's avatar
每日一练社区 已提交
150
    {
每日一练社区's avatar
每日一练社区 已提交
151 152 153 154
        if (a[i] - a[i - 1] == 2)
            result1 = a[i] - 1;
        if (a[i] == a[i - 1])
            result2 = a[i];
每日一练社区's avatar
每日一练社区 已提交
155
    }
每日一练社区's avatar
每日一练社区 已提交
156
    cout << result1 << " " << result2;
每日一练社区's avatar
每日一练社区 已提交
157 158 159 160
}
```

### B
F
fix bug  
feilong 已提交
161

每日一练社区's avatar
每日一练社区 已提交
162
```c
每日一练社区's avatar
每日一练社区 已提交
163
int a[10005];
每日一练社区's avatar
每日一练社区 已提交
164 165 166 167
int main()
{
    int n;
    cin >> n;
每日一练社区's avatar
每日一练社区 已提交
168 169 170
    int k = 0;
    char ch = ' ';
    int i, j = 0, t;
每日一练社区's avatar
每日一练社区 已提交
171 172
    for (i = 0; i < n; i++)
    {
每日一练社区's avatar
每日一练社区 已提交
173
        while (ch != '\n')
每日一练社区's avatar
每日一练社区 已提交
174
        {
每日一练社区's avatar
每日一练社区 已提交
175 176 177 178 179
            cin >> t;
            ch = getchar();

            a[j++] = t;
            k++;
每日一练社区's avatar
每日一练社区 已提交
180
        }
每日一练社区's avatar
每日一练社区 已提交
181
        ch = ' ';
每日一练社区's avatar
每日一练社区 已提交
182
    }
每日一练社区's avatar
每日一练社区 已提交
183 184 185
    sort(a, a + k);
    int ans1 = 0, ans2 = 0;
    for (j = 0; j < k - 1; j++)
每日一练社区's avatar
每日一练社区 已提交
186
    {
每日一练社区's avatar
每日一练社区 已提交
187 188 189 190 191 192 193 194
        if (ans1 && ans2)
            break;
        if (a[j] == a[j + 1] - 1)
            continue;
        else if (a[j] == a[j + 1])
            ans2 = a[j];
        else
            ans1 = a[j] + 1;
每日一练社区's avatar
每日一练社区 已提交
195 196
    }
    cout << ans1 << " " << ans2;
每日一练社区's avatar
每日一练社区 已提交
197
    return 0;
每日一练社区's avatar
每日一练社区 已提交
198 199 200 201
}
```

### C
F
fix bug  
feilong 已提交
202

每日一练社区's avatar
每日一练社区 已提交
203
```c
每日一练社区's avatar
每日一练社区 已提交
204 205 206
int ans[10005];
char str[100001];

每日一练社区's avatar
每日一练社区 已提交
207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229
int main()
{
    int n;
    cin >> n;
    int i, k = 0;
    getchar();
    for (i = 0; i < n; i++)
    {
        gets(str);
        char *p;
        p = strtok(str, " ");
        ans[k++] = atoi(p);
        while (p)
        {
            p = strtok(NULL, " ");
            if (p)
                ans[k++] = atoi(p);
        }
    }
    sort(ans, ans + k);
    int ans1, ans2;
    for (i = 0; i < k - 1; i++)
    {
每日一练社区's avatar
每日一练社区 已提交
230
        if (ans[i + 1] - ans[i] == 2)
每日一练社区's avatar
每日一练社区 已提交
231 232 233 234 235 236 237 238 239
        {
            ans1 = ans[i] + 1;
        }
        if (ans[i + 1] == ans[i])
            ans2 = ans[i];
    }
    cout << ans1 << " " << ans2;
}
```