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)))
相关推荐
小刘|12 分钟前
《Java 实现希尔排序:原理剖析与代码详解》
java·算法·排序算法
南宫理的日知录15 分钟前
99、Python并发编程:多线程的问题、临界资源以及同步机制
开发语言·python·学习·编程学习
jjyangyou17 分钟前
物联网核心安全系列——物联网安全需求
物联网·算法·安全·嵌入式·产品经理·硬件·产品设计
coberup24 分钟前
django Forbidden (403)错误解决方法
python·django·403错误
van叶~34 分钟前
算法妙妙屋-------1.递归的深邃回响:二叉树的奇妙剪枝
c++·算法
简简单单做算法35 分钟前
基于Retinex算法的图像去雾matlab仿真
算法·matlab·图像去雾·retinex
云卓SKYDROID1 小时前
除草机器人算法以及技术详解!
算法·机器人·科普·高科技·云卓科技·算法技术
龙哥说跨境1 小时前
如何利用指纹浏览器爬虫绕过Cloudflare的防护?
服务器·网络·python·网络爬虫
小白学大数据1 小时前
正则表达式在Kotlin中的应用:提取图片链接
开发语言·python·selenium·正则表达式·kotlin
flashman9111 小时前
python在word中插入图片
python·microsoft·自动化·word