[BOJ]16936または3に2を掛ける
質問をすばやく表示
シェアを求める演算がずっと間違っているからです.python 3では、float divisionを/実行し、int(a/b)は不正なシェアを返すことができる.従って、acは、フロア分割を実行するa/bに変更された場合にのみ取得される.
注-What is the difference between a//b and int(a/b)?
シェアを求める演算がずっと間違っているからです.python 3では、float divisionを/実行し、int(a/b)は不正なシェアを返すことができる.従って、acは、フロア分割を実行するa/bに変更された場合にのみ取得される.
注-What is the difference between a//b and int(a/b)?
--> 3의 갯수가 많고, 2의 갯수가 적은 순으로 정렬하면 되겠다
1. 원래 배열을 둔다.
2. 원래 배열과 인덱스를 공유하는 2의 갯수와 3의 갯수를 갖는 pair를 가지는 지료형 배열을 둔다
3. 정렬한다.
"""
import sys
class TwoThreeCnt:
def __init__(self, index, number):
self.index = index
self.two = TwoThreeCnt._get_cnt(number, 2)
self.three = TwoThreeCnt._get_cnt(number, 3)
@staticmethod
def _get_cnt(number, two_or_three):
cnt = 0
while True:
if number == 0:
return cnt
if number % two_or_three != 0:
return cnt
cnt += 1
number //= two_or_three
def solve(shuffled):
parsed = [TwoThreeCnt(idx, number) for idx, number in enumerate(shuffled)]
sort_seq = sorted(parsed, key=lambda item: (-item.three, item.two))
return [shuffled[item.index] for item in sort_seq]
if __name__ == '__main__':
n = int(sys.stdin.readline().rstrip())
inputs = sys.stdin.readline().rstrip().split()
answer = solve([int(input) for input in inputs])
[print(ans, end=' ') for ans in answer]
Reference
この問題について([BOJ]16936または3に2を掛ける), 我々は、より多くの情報をここで見つけました https://velog.io/@litien/BOJ-16936-나3곱2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol