A. Even Odds
http://codeforces.com/problemset/problem/318/A
time limit per test
memory limit per test
input
output
n. He writes down the following sequence of numbers: firstly all odd integers from 1 to n (in ascending order), then all even integers from 1 to n (also in ascending order). Help our hero to find out which number will stand at the position number k.
Input
n and k (1 ≤ k ≤ n ≤ 1012).
%lld specifier to read or write 64-bit integers in C++. It is preferred to use the cin, cout streams or the %I64dspecifier.
Output
k
Sample test(s)
input
10 3
output
5
input
7 7
output
6
水。
完整代码:
/*30ms,0KB*/
#include<cstdio>
int main()
{
__int64 n, k;
scanf("%I64d%I64d", &n, &k);
if (n & 1)
{
if (k > (n >> 1) + 1)
{
k -= (n >> 1) + 1;
printf("%I64d", k << 1);
}
else
printf("%I64d", (k << 1) - 1);
}
else
{
if (k > (n >> 1))
{
k -= n >> 1;
printf("%I64d", k << 1);
}
else
printf("%I64d", (k << 1) - 1);
}
return 0;
}