Codeforces #188 Div2 A "Even Odds"
問題
http://codeforces.com/contest/318/problem/A
訳
奇妙な人、ボロディアは特に自然数(自然数とは正の整数である)の一般的な順序が気に入らず、機嫌が悪かった。彼は自然数の順序の再配置を決める。しかし、自然数は無限大なので彼は1~nで決める事にした。彼は次のように数列を書き出していった。最初1~nの全ての奇数を昇順に書き出す。それから1~nの全ての偶数を昇順に書き出す。書き出した数列のk番目の数を出力せよ。
制約
1 <= k <= n <= 10^12
考えた事
1 + ( k - 1 ) * 2 <= nならば奇数なのでそのまま出力
そうでなければその数から、奇数ならn、偶数ならn-1を引いて出力
ソースコード
int main() { long long n, k; cin >> n >> k; long long t = 1 + (k - 1) * 2; if( t > n ){ if( n % 2 == 1 ){ t -= n; }else{ t -= n - 1; } } cout << t << endl; }