結果
| 問題 |
No.300 平方数
|
| コンテスト | |
| ユーザー |
🍡yurahuna
|
| 提出日時 | 2015-12-21 21:57:18 |
| 言語 | Python2 (2.7.18) |
| 結果 |
AC
|
| 実行時間 | 96 ms / 1,000 ms |
| コード長 | 1,040 bytes |
| コンパイル時間 | 351 ms |
| コンパイル使用メモリ | 6,912 KB |
| 実行使用メモリ | 6,784 KB |
| 最終ジャッジ日時 | 2024-09-18 18:08:35 |
| 合計ジャッジ時間 | 3,625 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 43 |
ソースコード
#入力Xに対し、X*Yが平方数となるような最小のYを求める
#Yは、 Xを素因数分解したとき、指数が奇数である数の積
#素因数分解
#引数: 整数n
#返り値: 素因数分解の結果table[]
#tabelは[2, 2, 2, 3, 5, 5,...]のようになる
def prime_decomposition(n):
i = 2
table = []
SQRT_N = int(n**0.5)
while i <= SQRT_N:
while n % i == 0:
n /= i
table.append(i)
i += 1
if n > 1:
table.append(n)
return table
def main():
x = input()
table = prime_decomposition(x)
if table == []:
print 1
else:
done = []
divisor_y = []
for i in xrange(len(table)):
if not table[i] in done:
if table.count(table[i]) % 2 != 0:
divisor_y.append(table[i])
done.append(table[i])
if divisor_y == []:
print 1
else:
print reduce(lambda x, y:x*y, divisor_y)
if __name__ == "__main__":
main()
🍡yurahuna