给定 n 个正整数,要求你从中得到下列三种计算结果: a1 = 能被 3 整除的最大整数 a2 = 存在整数 k 使之可以表示为 3k+1 的整数的个数 a3 = 存在整数 k 使之可以表示为 3k+2 的所有整数的平均值(精确到小数点后 1 位) 输入格式: 输入首先在第一行给出一个正整数 n,随后一行给出 n 个正整数。所有数字都不超过 100,同行数字以空格分隔。 输出格式: 在一行中顺序输出 a1、a2、a3的值,其间以 1 个空格分隔。如果某个数字不存在,则对应输出none。
时间: 2023-05-31 21:19:31 浏览: 84
### 回答1:
题目翻译:
给定 n 个正整数,求出其中:
1. 能被 3 整除的最大整数 a1;
2. 可以表示为 3k+1 的整数的个数 a2;
3. 可以表示为 3k+2 的所有整数的平均值(精确到小数点后 1 位)a3。
输入格式:
第一行输入一个正整数 n,表示给定正整数的个数。
第二行输入 n 个正整数,同行数字以空格分隔。
输出格式:
输出一行,顺序输出 a1、a2、a3 的值,其间以 1 个空格分隔。如果某个数字不存在,则对应输出 none。
算法思路:
1. 遍历所有数字,找到能被 3 整除的最大整数 a1;
2. 遍历所有数字,统计可以表示为 3k+1 的整数的个数 a2;
3. 遍历所有数字,统计可以表示为 3k+2 的所有整数的和 sum 和个数 count,计算平均值 a3=sum/count。
算法实现:
时间复杂度:O(n)
空间复杂度:O(1)
Python 代码:
### 回答2:
题目分析
此题比较简单,只需要按照题意进行计算即可。
对于 a1,直接对给定的正整数从大到小排序,然后遍历数组,找到第一个能被 3 整除的数,即为 a1。
对于 a2,只需要判断给定的正整数是否为 3k+1(即 (number-1)%3==0),如果是,则将计数器加 1,最后输出计数器的值即可。
对于 a3,先计算出所有能被 3 整除的数的和 sum 和数量 count, 然后计算平均值 avg=sum/count,最后保留一位小数输出即可。
AC 代码
### 回答3:
题目分析:
题目要求从n个正整数中得到三种计算结果,分别为能被3整除的最大整数、存在整数k使之可以表示为3k+1的整数的个数、存在整数k使之可以表示为3k+2的所有整数的平均值(精确到小数点后1位)。
对于第一种计算结果,我们只需要遍历这n个正整数,若该正整数能被3整除且比当前的最大整数要大,则更新最大整数。
对于第二种计算结果,我们首先需要遍历这n个正整数,统计出能被3整除的整数个数和3k+1的整数个数,设它们为a和b,则3k+2的整数个数应该为n-a-b,因为能被3整除和3k+1的整数均为3的倍数,不属于3k+2的整数。所以第二种计算结果即为b。
对于第三种计算结果,我们同样需要遍历这n个正整数,统计它们中能被3整除的整数和3k+2的整数,定位后将它们累加起来,最后再除以它们的个数即为所求解。需要注意的是题目要求保留一位小数。
综上所述,本题需要遍历n个正整数3次,时间复杂度为O(n),是一道简单的模拟题。
参考代码: