OD试题(11)

文章目录

1.自守数

描述:自守数是指一个数的平方的尾数等于该数自身的自然数。例如:25^2 = 625,76^2 = 5776,9376^2 = 87909376。请求出n(包括n)以内的自守数的个数

输入描述:int型整数

输出描述:n以内自守数的数量。

示例1:

输入:6

输出:4

说明:有0,1,5,6这四个自守数

示例2:

输入:1

输出:2

说明:有0, 1这两个自守数

参考代码:

python 复制代码
import sys
for line in sys.stdin:
    a = int(line.split()[0])
    count = 0
    for i in range(a+1):
        a = i ** 2
        # print(a)
        a_str = str(a)
        i_str = str(i)
        i_len = len(i_str)
        for j in range(len(a_str)):
            if a_str[len(a_str)-1-j:] == i_str:
                count += 1
    print(count)

2.等差数列

描述:等差数列 2,5,8,11,14。。。。

(从 2 开始的 3 为公差的等差数列)

输出求等差数列前n项和

输入描述:输入一个正整数n。

输出描述:输出一个相加后的整数。

示例1

输入:2

输出:7

实例2

输入:275

输出:113575

参考代码:

python 复制代码
import sys

for line in sys.stdin:
    a = int(line.split()[0])
    total = a * 2 +  a * (a - 1) // 2 * 3 
    print(total)

3.输入整形数组和排序标识,对其元素按照升序或降序

描述:输入整型数组和排序标识,对其元素按照升序或降序进行排序

输入描述:

第一行输入数组元素个数

第二行输入待排序的数组,每个数用空格隔开

第三行输入一个整数0或1。0代表升序排序,1代表降序排序

输出描述:

输出排好序的数字

示例1:

输入:

8

1 2 4 9 3 55 64 25

0

输出:

1 2 3 4 9 25 55 64

示例2:

输入:

5

1 2 3 4 5

1

输出:

5 4 3 2 1

参考代码:

python 复制代码
import sys

tmp_list = []
for line in sys.stdin:
    a = line.split()
    tmp_list.append(a)
tmp = [ int(_) for _ in tmp_list[1] ]
tmp.sort()
tmp = [ str(_) for _ in tmp ]

if tmp_list[2][0] == '0':
    print(' '.join(tmp))
else:
    tmp.reverse()
    print(' '.join(tmp))

4. 字符统计

描述:输入一个只包含小写英文字母和数字的字符串,按照不同字符统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASCII码由小到大排序输出。

输入描述:一个只包含小写英文字母和数字的字符串。

输出描述:一个字符串,为不同字母出现次数的降序表示。若出现次数相同,则按ASCII码的升序输出。

示例1

输入:aaddccdc

输出:cda

说明:样例里,c和d出现3次,a出现2次,但c的ASCII码比d小,所以先输出c,再输出d,最后输出a.

参考代码:

python 复制代码
import sys

for line in sys.stdin:
    a = line.split()[0]
    a_list = a
    a_set = set(a)
    a_dict = { _: a_list.count(_) for _ in a_set }
    
    tmp_list = [ _ for _ in a_dict.values() ]
    tmp_list = list(set(tmp_list))
    tmp_list.sort()
    tmp_list.reverse()
    tmp = ''

    for _ in tmp_list:
        tmp_str = ''
        for k,v in a_dict.items():
            if v == _:
                tmp_str += k
        b = list(tmp_str)
        b.sort()
        b_str = ''.join(b)
        tmp += b_str
    print(tmp)

5.记负均正II

描述:输入 n 个整型数,统计其中的负数个数并求所有非负数的平均值,结果保留一位小数,如果没有非负数,则平均值为0

本题有多组输入数据,输入到文件末尾。

输入描述:输入任意个整数,每行输入一个。

输出描述:输出负数个数以及所有非负数的平均值

示例1:

输入:

-13

-4

-7

输出:

3

0.0

示例2

输入:

-12

1

2

输出:

1

1.5

参考代码:

python 复制代码
import sys

tmp_list = []

for line in sys.stdin:
    a = line.split()[0]
    tmp_list.append(a)

tmp_list = [ int(_) for _ in tmp_list]
count = 0
total = 0
for _ in tmp_list:
    if _ < 0:
        count += 1
    else:
        total += _

result = total if total == 0 else total / (len(tmp_list) - count)
print(count)
print("{}".format(round(float(result),1)))
相关推荐
咒法师无翅鱼3 分钟前
【定理证明工具调研】Coq, Isabelle and Lean.
算法
小陈phd17 分钟前
深度学习之超分辨率算法——SRCNN
python·深度学习·tensorflow·卷积
CodeClimb18 分钟前
【华为OD-E卷-简单的自动曝光 100分(python、java、c++、js、c)】
java·python·华为od
数据小小爬虫29 分钟前
如何利用Python爬虫获取商品历史价格信息
开发语言·爬虫·python
风清云淡_A29 分钟前
【java基础系列】实现数字的首位交换算法
java·算法
涵涵子RUSH32 分钟前
合并K个升序链表(最优解)
算法·leetcode
NiNg_1_23436 分钟前
Python的sklearn中的RandomForestRegressor使用详解
开发语言·python·sklearn
黑色叉腰丶大魔王40 分钟前
《基于 Python 的网页爬虫详细教程》
开发语言·爬虫·python
爱吃西瓜的小菜鸡41 分钟前
【C语言】矩阵乘法
c语言·学习·算法
laity171 小时前
爬取小说案例-BeautifulSoup教学篇
爬虫·python