问题描述 校门外的池塘里传来一片鸭子的叫声。同学们都被这突如其来的鸭子叫声吸引了过去。毕竟这是多么田园的景象呀。不知道是谁,非提出这么一个问题,非常想知道有几只鸭子。所以,同学们努力对听到的声音进行了数字化工作。假设每一个数字代表一只鸭子,也就是只有同一只鸭子发出的声音是一样的。那么已知有N个叫声,计算出有多少只鸭子。 输入描述 输入的第一行为一个正整数n(n<100000),代表有n个叫声。 第二行有n个数字ai,数字之间用一个空格隔开(1 ≤ai ≤ 10000)。 输出描述 输出一个数字,代表鸭子的只数。
时间: 2024-03-14 12:46:11 浏览: 96
这道题目可以使用哈希表来统计每种叫声的数量,最后统计不同叫声的数量即可。
Java代码如下:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < n; i++) {
int a = scanner.nextInt();
map.put(a, map.getOrDefault(a, 0) + 1); // 统计每种叫声的数量
}
System.out.println(map.size()); // 输出不同叫声的数量
}
}
```
输入样例:
```
9
1 2 3 4 5 6 7 8 9
```
输出样例:
```
9
```
其中,`map.getOrDefault(a, 0)` 表示获取叫声 `a` 的数量,如果没有则默认值为 `0`,`map.put(a, map.getOrDefault(a, 0) + 1)` 表示将叫声 `a` 的数量加1。最后输出 `map` 的大小即可。
相关问题
p1047 校门外的树c语言
这是一道模拟题,题目要求我们在一排树中,去掉一些树后,计算剩余的树的数量。具体思路如下:
1.首先读入树的总数l和需要去掉的树的数量m。
2.定义一个长度为l+1的数组a,用来记录每个位置上是否有树,初始值都为1。
3.接着读入需要去掉的树的区间[u,v],将区间内的a[i]都置为0。
4.最后遍历整个数组a,统计值为1的元素个数,即为剩余的树的数量。
下面是C语言的代码实现:
```c
#include <stdio.h>
int main() {
int l, m, u, v;
scanf("%d %d", &l, &m);
int i, j, k = 0;
int a[l + 1];
for (i = 0; i <= l; i++) {
a[i] = 1;
}
for (i = 0; i < m; i++) {
scanf("%d %d", &u, &v);
for (j = u; j <= v; j++) {
a[j] = 0;
}
}
for (i = 0; i <= l; i++) {
if (a[i] == 1) {
k++;
}
}
printf("%d", k);
return 0;
}
```
p1047+校门外的树c
根据引用[1]和引用的描述,题目大意是在一条长度为L的马路上,有一排树,每两棵相邻的树之间的间隔都是1米。现在要移走一些树,使得剩下的树之间的间隔都是k米,问最多能剩下多少棵树。
思路如下:
1. 首先读入L和k,以及要移走的树的数量m。
2. 定义一个长度为L+1的数组a,表示每个位置上是否有树,初始值都为1。
3. 读入m个要移走的树的位置,将这些位置上的树的值设为0。
4. 从左到右遍历数组a,如果当前位置上有树,则向右数k个位置,将这个位置到当前位置之间的所有位置上的树的值都设为0。
5. 从右到左遍历数组a,如果当前位置上有树,则向左数k个位置,将这个位置到当前位置之间的所有位置上的树的值都设为0。
6. 统计数组a中值为1的元素个数,即为剩下的树的数量。
以下是Python代码实现:
```python
L, k, m = map(int, input().split())
a = [1] * (L + 1)
for i in range(m):
pos = int(input())
a[pos] = 0
count = 0
for i in range(0, L + 1, k + 1):
if a[i] == 1:
for j in range(i - k, i):
if j >= 0:
a[j] = 0
count += 1
for i in range(L, -1, -(k + 1)):
if a[i] == 1:
for j in range(i + 1, i + k + 1):
if j <= L:
a[j] = 0
print(sum(a))
```
相关推荐
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)