これは問題文がいかめしいけど、ちょくだいさんのこのツイートが全てかなと思う!
C問題、数学の問題といえばそうなんだけど、「無限に長いすごろくがあります。ゴールまでの距離がxです。Kマスずつ進めますが、ゴールを通り過ぎてしまう場合は折り返します。最もゴールに近づく時の残りマス数を答えなさい」みたいにすると、まぁ一応ちゃんとしたストーリーはつくよね。
— chokudai(高橋 直大)🐙🔥@AtCoder社長 (@chokudai) 2020年4月4日
問題概要
整数 が与えられる。 に対して以下の操作を好きな回数だけ繰り返すことができる。得られる結果の最小値を求めよ。
- を、] で置き換える
制約
考えたこと
問題文がいかめしいけど、実のところ言っていることはシンプルなのだ。だが、それを読み取るためには、いくつかの に対して試してみるのがいいと思う。それをしていくうちに、様子をつかむことができる。
とかの場合、操作を繰り返すと
45 → 37 → 29 → 21 → 13 → 5 → 3 → 5 → 3 → 5 → 3 → ...
という風になる。 のときは
40 → 32 → 24 → 16 → 8 → 0 → 8 → 0 → 8 → 0 → ...
という風になる。このように、結局のところ最終的には、
- を で割ったあまり ( % )
- それを から引いた値 ( - % )
を繰り返すことになる。よって答えは
( % , - % )
となる。
#include <bits/stdc++.h> using namespace std; int main() { long long N, K; cin >> N >> K; cout << min(N % K, K - N % K) << endl; }