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)))
相关推荐
小二·6 分钟前
java基础面试题笔记(基础篇)
java·笔记·python
搬砖的小码农_Sky1 小时前
C语言:数组
c语言·数据结构
小喵要摸鱼1 小时前
Python 神经网络项目常用语法
python
Swift社区2 小时前
LeetCode - #139 单词拆分
算法·leetcode·职场和发展
Kent_J_Truman3 小时前
greater<>() 、less<>()及运算符 < 重载在排序和堆中的使用
算法
先鱼鲨生3 小时前
数据结构——栈、队列
数据结构
一念之坤3 小时前
零基础学Python之数据结构 -- 01篇
数据结构·python
IT 青年3 小时前
数据结构 (1)基本概念和术语
数据结构·算法
熬夜学编程的小王3 小时前
【初阶数据结构篇】双向链表的实现(赋源码)
数据结构·c++·链表·双向链表
wxl7812273 小时前
如何使用本地大模型做数据分析
python·数据挖掘·数据分析·代码解释器