[yukicoder] No.428 小数から逃げる夢, No.442 和と積 [Python]
Pythonで解くと楽な問題
Pythonは整数を非常に大きな桁まで簡単に扱うことができます。多倍長整数と言うんでしたっけ?まあ、JavaでもBigDecimalとかを使えば同じことができると思いますが、Pythonのメリットが活きる問題もあると思います。
No.428 小数から逃げる夢
小数点が与えられる問題ですが、いったん整数として考えると分かりやすいと思います。
小数点が190桁の数値を 倍したものを出力問題ですが、190桁の整数を 倍したあとの桁数と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)