1
0

More than 3 years have passed since last update.

PythonでABC103のA~C問題を解く

Last updated at Posted at 2020-01-06

はじめに

前回からrateの変動はありません。
誰かに書けと言われたような気がした。
今回はCまで解けました。今回のようなCはわりとできる?
新学期が始まってしまった...

A問題

問題

考えたこと
感覚的に小さい順にsortしたら、値が最小になりそう。ということで実装

a = list(map(int,input().split()))
a.sort()
ans = abs(a[1]-a[0]) + abs(a[2] - a[1])
print(ans)

問題文のtaskは3個と読み落としていてfor文を使うのかと思って苦しんでました。問題はしっかり読みましょう

B問題

問題

考えたこと
どうやって回転を実装するかを悩んでいたら、同じ文を二つ連結して、そのなかに探したい文字列があればよいのではと思って実装した。


s = str(input())*2
t = str(input())

if t in s:
    print('Yes')
else:
    print('No')

文字列が入っているかどうかを判定するのはinを使うということを初めて知った。

C問題

問題

考えたこと
どうやってm mod a[i]が最大値となるようなmを設定するかが鍵。
m = a[i] * a[i+1] *......*a[n]とaの要素を全て掛けると全てのaで割きれる。
ということは、aの要素を全て掛けたものから1を引けばいいはず。そうすれば、余りが最大になる。

n = int(input())
a = list(map(int,input().split()))

ans = 0
m = 1
for i in range(0,n):
    m *= a[i]
m -= 1
for j in range(0,n):
    ans += m % a[j]
print(ans)

最初にfor文でmを求めてあとは、それぞれの余りを計算するだけです。

まとめ

今回は、3問解けたのでうれしい。
学校が始まって、模試とかがあるので投稿頻度は落ちます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0