PTA 1083 是否存在相等的差 (20 分)

简介: 给定 N 张卡片,正面分别写上 1、2、……、N,然后全部翻面,洗牌,在背面分别写上 1、2、……、N。

题目


给定 N 张卡片,正面分别写上 1、2、……、N,然后全部翻面,洗牌,在背面分别写上 1、2、……、N。将每张牌的正反两面数字相减(大减小),得到 N 个非负差值,其中是否存在相等的差?


输入格式: 输入第一行给出一个正整数 N(2 ≤ N ≤ 10 000),随后一行给出 1 到 N 的一个洗牌后的排列,第 i 个数表示正面写了 i 的那张卡片背面的数字。


输出格式: 按照“差值 重复次数”的格式从大到小输出重复的差值及其重复的次数,每行输出一个结果。


输入样例:
8
3 5 8 6 2 1 4 7
结尾无空行
输出样例:
5 2
3 3
2 2
结尾无空行

解题思路


countInput = int(input())
numList = input().split(" ")
# countInput = 8
# numList = [3,5,8,6,2,1,4,7]
resDic = dict()
for i in range(1, countInput+1):
    # 绝对差
    res = abs(int(numList[i-1])-i)
    # 每个值放入字典统计
    if res not in resDic:
        resDic[res] = 1
    else:
        resDic[res] = resDic[res] + 1
# print(resDic.keys())
resList = sorted(resDic.keys())
resList.reverse()
# print(resList)
for i in resList:
    if resDic[i] != 1:#次数为1就是不重复,不进行输出
        print(str(i) + " " + str(resDic[i]))


目录
相关文章
【PTA】7-8 到底有多二 (15分)
【PTA】7-8 到底有多二 (15分)
2196 0
|
2月前
1083 是否存在相等的差 (20 分)
1083 是否存在相等的差 (20 分)
PTA 7-4 胖达与盆盆奶 (20 分)
俗称“胖达”,会排队吃盆盆奶。它们能和谐吃奶的前提,是它们认为盆盆奶的分配是“公平”的,即:更胖的胖达能吃到更多的奶,等胖的胖达得吃到一样多的奶。
147 0
|
测试技术
PTA 1039 到底买不买 (20 分)
小红想买些珠子做一串自己喜欢的珠串。卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖。
105 0
L1-057 PTA使我精神焕发 (5 分)
L1-057 PTA使我精神焕发 (5 分)
77 0
L1-057 PTA使我精神焕发 (5 分)
PTA 7-1 多二了一点 (15 分)
若一个正整数有 2n 个数位,后 n 个数位组成的数恰好比前 n 个数位组成的数多 2,则称这个数字“多二了一点”。
102 0
|
人工智能
PTA 1079 延迟的回文数 (20 分)
给定一个 k+1 位的正整数 N,写成 a k ​ ⋯a 1 ​ a 0 ​ 的形式,其中对所有 i 有 0≤a i ​ <10 且 a k ​
95 0
PTA 1061 判断题 (15 分)
判断题的评判很简单,本题就要求你写个简单的程序帮助老师判题并统计学生们判断题的得分。
63 0
PTA 1016 部分A+B (15 分)
正整数 A 的“D A ​ (为 1 位整数)部分”定义为由 A 中所有 D A ​ 组成的新整数 P A ​
87 0
|
C语言
PTA 1026 程序运行时间 (15 分)
要获得一个 C 语言程序的运行时间,常用的方法是调用头文件 time.h,其中提供了 clock() 函数,可以捕捉从程序开始运行到 clock() 被调用时所耗费的时间。
106 0