7-2不思議を見つける(20ポイント)Python

長さnの正の整数のシーケンスでは、すべての奇数が偶数回表示され、1つの奇数の奇数のみが奇数回表示されます。あなたの仕事はこの奇妙な花を見つけることです。

入力フォーマットは:
入力は、まず、正の整数N(≤10与える4最初の行では、その後、次の行のタイトルの記述を満たす正の整数Nを与えます。各値は10超えない5、及び数は、スペースによって分離されています。

出力形式:
奇数を1行で出力しますタイトルは、この奇妙なものが存在することを保証します。

入力サンプル:

12
23 16 87 233 87 16 87 233 23 87 233 16

サンプル出力:

233
著者 単位 コード長の制限 制限時間 メモリ制限
チェンユエ 浙江大学 16 KB 400ミリ秒 64 MB

問題解決のアイデア:

この質問には、3つの重要な判断ポイントがあります。

  1. この数は奇数ですか?奇数のみが奇数の特性を満たします
  2. この数は数回出てきました、数え方
  3. この数が奇数または偶数回表示されるかどうかを判断する方法

対応するアイデア:

  1. 奇数のみが奇数の特性を満たすため、%2の結果を判断し、偶数を除外することができます。
  2. dict各番号の出現回数を格納するために1つ宣言します最初に、inこの数を決定するには、存在しないdictダイレクトがあれば、value+1しない場合は、この番号に追加するkeyvalueのための1値の対
  3. 質問の状態がわかっているので、1回だけ奇数が表示されます。したがってdict.keys()、トラバースするだけで、2で割り切れるかどうかkey対応するvalue判断を得るvalueことができます。そうでない場合は、これが答えです。出力してkey、プログラムを終了します。

ACコード:

n = input()		#对应题目给的输入格式,作为占位符,不做他用
ques = list(map(int, input().split()))		#获取输入的数字并存入列表中
temp = {
    
    }		#声明一个字典
for i in ques:		#遍历需要求解的列表
    if i % 2 == 1:		#如果这个数是个奇数(偶数直接忽略):
        if i in temp:		#再判断这个数是否存在于字典中
            temp[i] = temp[i] + 1		#如果存在,值+1
        else:
            temp[i] = 1		#如果不存在,即本次是第一次出现,新增且值为1
for i in temp.keys():	#遍历字典
    if temp[i] % 2 == 1:	#判断出现次数是否为奇数
        print(i)	#打印结果
        exit(0)		#退出程序

@ C ^ superによって提供されたアイデアのおかげで、編集し、別のソリューションを追加します。

問題解決のアイデア:

XOR演算、0と同じ結果、および0以外の任意の数のXOR演算の結果はそれ自体です。したがって、この機能を使用してXOR演算を実行し、偶数の数値を削除できます。最終的な結果は、必要な「エキゾチックな数値」です。

ACコード:

n = input()  # 同上,占位符
ques = [i for i in list(map(int, input().split())) if i % 2 == 1]  # 列表生成式获取输入的奇数集合
ans = 0  # 初始化ans
for i in ques:
    ans ^= i  # 与列表中每个元素做异或运算
print(ans)  # 输出结果

XOR学習リファレンス:

列を知る:Python論理演算子xorのXorについて話すhttps://zhuanlan.zhihu.com/p/96147159

おすすめ

転載: blog.csdn.net/weixin_44289959/article/details/111058253