7-2奇抜な(20点)Pythonを探す
6495 ワード
長さnの正の整数シーケンスでは、すべての奇数が偶数回、奇数が奇数回しか現れなかった.君の任務はこの奇抜なものを見つけることだ.
入力フォーマット:最初の行に正の整数n(≦10 4)を与え、その後の行にn個の問題面記述を満たす正の整数を与える.各数値は10 5を超えず、数値間はスペースで区切られています.
出力フォーマット:その奇抜な数を1行に出力します.テーマはこの奇抜さが存在することを保証します.
サンプルを入力:
出力サンプル:
作成者
たんい
コード長制限
時間の制限
メモリ制限
陳越
浙江大学
16 KB
400 ms
64 MB
問題解決の考え方:
この問題には3つの重要な判断点があります.この数は奇数であるかどうか、奇数だけが奇数の特徴 を満たす.この数字は何度も現れて、どのように を統計しますこの数字が奇数回であるか偶数回であるかをどのように判断するか 対応の考え方:奇数のみが奇数数数の特徴を満たすため、%2の結果を判断し、偶数をフィルタリングすることができる. は、各数の出現回数を格納するために を追加する.は、与えられた条件が1つの奇抜な数しか現れていないことを知っているからだ.したがって、
ACコード:
編集して、もう一つの解法を加えて、大物@C^superが提供した考え方に感謝します.
問題解決の考え方:
異或演算は、同じように0を出し、0でない数と0を異或演算した結果はそれ自体である.そのため、この特性を利用して異或演算をして偶数回現れた数字を除去することができ、最後の結果は必要な「奇抜な数」である.
ACコード:
学習参考:
コラム:Python論理演算子異またはxorについてhttps://zhuanlan.zhihu.com/p/96147159
入力フォーマット:最初の行に正の整数n(≦10 4)を与え、その後の行にn個の問題面記述を満たす正の整数を与える.各数値は10 5を超えず、数値間はスペースで区切られています.
出力フォーマット:その奇抜な数を1行に出力します.テーマはこの奇抜さが存在することを保証します.
サンプルを入力:
12
23 16 87 233 87 16 87 233 23 87 233 16
出力サンプル:
233
作成者
たんい
コード長制限
時間の制限
メモリ制限
陳越
浙江大学
16 KB
400 ms
64 MB
問題解決の考え方:
この問題には3つの重要な判断点があります.
dict
を宣言する.まずin
でこの数字がdict
にないと判断し、もし、直接value+1
であれば、もしいなければ、この数がkey
value
である1
のキー値対dict.keys()
を巡回し、key
に対応するvalue
を手に入れてvalue
が2で割り切れるかどうかを判断し、できない場合は、これが答えであり、この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が提供した考え方に感謝します.
問題解決の考え方:
異或演算は、同じように0を出し、0でない数と0を異或演算した結果はそれ自体である.そのため、この特性を利用して異或演算をして偶数回現れた数字を除去することができ、最後の結果は必要な「奇抜な数」である.
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) #
学習参考:
コラム:Python論理演算子異またはxorについてhttps://zhuanlan.zhihu.com/p/96147159