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]))


目录
相关文章
|
5月前
1083 是否存在相等的差 (20 分)
1083 是否存在相等的差 (20 分)
PTA 7-2 找奇葩 (20 分)
在一个长度为 n 的正整数序列中,所有的奇数都出现了偶数次,只有一个奇葩奇数出现了奇数次。你的任务就是找出这个奇葩。
108 0
|
算法 容器
华为机试HJ99:自守数(附带提速方案)
华为机试HJ99:自守数(附带提速方案)
|
测试技术
PTA 1039 到底买不买 (20 分)
小红想买些珠子做一串自己喜欢的珠串。卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖。
118 0
PTA 7-4 最近的斐波那契数 (20 分)
斐波那契数列 F n ​ 的定义为:对 n≥0 有 F n+2 ​ =F n+1 ​ +F n ​ ,初始值为 F 0 ​ =0 和 F 1 ​ =1。
104 0
PTA 1061 判断题 (15 分)
判断题的评判很简单,本题就要求你写个简单的程序帮助老师判题并统计学生们判断题的得分。
73 0
|
人工智能
PTA 1079 延迟的回文数 (20 分)
给定一个 k+1 位的正整数 N,写成 a k ​ ⋯a 1 ​ a 0 ​ 的形式,其中对所有 i 有 0≤a i ​ <10 且 a k ​
101 0
PTA 1056 组合数的和 (15 分)
给定 N 个非 0 的个位数字,用其中任意 2 个数字都可以组合成 1 个 2 位的数字。要求所有可能组合出来的 2 位数字的和。
116 0
PTA 1046 划拳 (15 分)
划拳是古老中国酒文化的一个有趣的组成部分。酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字。
105 0
PTA 1017 A除以B (20 分)
本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。
102 0