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)))
相关推荐
X同学的开始2 小时前
数据结构之二叉树遍历
数据结构
waterHBO2 小时前
python 爬虫 selenium 笔记
爬虫·python·selenium
limingade3 小时前
手机实时提取SIM卡打电话的信令和声音-新的篇章(一、可行的方案探讨)
物联网·算法·智能手机·数据分析·信息与通信
编程零零七3 小时前
Python数据分析工具(三):pymssql的用法
开发语言·前端·数据库·python·oracle·数据分析·pymssql
AIAdvocate5 小时前
Pandas_数据结构详解
数据结构·python·pandas
小言从不摸鱼5 小时前
【AI大模型】ChatGPT模型原理介绍(下)
人工智能·python·深度学习·机器学习·自然语言处理·chatgpt
jiao000015 小时前
数据结构——队列
c语言·数据结构·算法
kaneki_lh5 小时前
数据结构 - 栈
数据结构
铁匠匠匠5 小时前
从零开始学数据结构系列之第六章《排序简介》
c语言·数据结构·经验分享·笔记·学习·开源·课程设计
C-SDN花园GGbond5 小时前
【探索数据结构与算法】插入排序:原理、实现与分析(图文详解)
c语言·开发语言·数据结构·排序算法