[选拔赛] Even Odds

来源:互联网 发布:37轩辕剑四极进阶数据 编辑:程序博客网 时间:2024/05/29 18:49
 Even Odds
Being a nonconformist, Volodya is displeased with the current state of things, particularly with the order of natural numbers (natural number is positive integer number). He is determined to rearrange them. But there are too many natural numbers, so Volodya decided to start with the first 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
The only line of input contains integers n and k (1≤k≤n≤1e14).


Output
Print the number that will stand at the position number k after Volodya's manipulations.


Sample test(s)
input
10 3
output
5
input
7 7
output
6
Note
In the first sample Volodya's sequence will look like this: {1, 3, 5, 7, 9, 2, 4, 6, 8, 10}. The third place in the sequence is therefore occupied by the number 5.
Hint 
注意数据的类型

use __int64 to read data and use %I64d to output data


解题报告


此题关键问题在于是如何生成这个数列,根据样例提示,得出的结论是:当求的数s小于等于(n+1)/2时数列为2*s-1,大于的话为2*((n+1)/2-s)。代码如下:

#include<stdio.h>int main(){    long long a,b;    while(scanf("%lld%lld",&a,&b)!=EOF)    {        if(a%2==0)            a=a/2;        else            a=a/2+1;        if(b<=a)            b=b*2-1;        else            b=(b-a)*2;        printf("%lld\n",b);    }    return 0;}