山傘のプログラミング勉強日記

プログラミングに関する日記とどうでもよい雑記からなるブログです。

[yukicoder] No.428 小数から逃げる夢, No.442 和と積 [Python]

Pythonで解くと楽な問題

Pythonは整数を非常に大きな桁まで簡単に扱うことができます。多倍長整数と言うんでしたっけ?まあ、JavaでもBigDecimalとかを使えば同じことができると思いますが、Pythonのメリットが活きる問題もあると思います。

No.428 小数から逃げる夢

小数点が与えられる問題ですが、いったん整数として考えると分かりやすいと思います。

小数点が190桁の数値を  n 倍したものを出力問題ですが、190桁の整数を  n 倍したあとの桁数と190を比較することで、小数点の位置が分かります。

コード

D = 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991
n=int(input())
nD = n * D
s = str(nD)
l = len(s)
if l - 190 == 0:
    print("0." + s)
else:
    print(s[0:l-190] +"."+ s[l-190:l])

No.442 和と積

最大公約数を求める問題ですが、与えられる数値が大きいので、Pythonを使うと楽ですね。また、Pythonには最大公約数を求める関数gcd()があるのも良いですね。

コード

import math

A, B = map(int,input().split())
G = math.gcd(A + B, A * B);
print(G)

感想

もっとPythonを勉強して競技プログラミングでも使いたいですね。