[选拔赛] 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
注意数据的类型
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;}
- [选拔赛] Even Odds
- Even Odds
- Even Odds
- Even Odds
- A. Even Odds
- A. Even Odds
- Codeforces Even Odds
- Codeforces 318A Even Odds
- codeforces 318A Even Odds
- Even Odds代码与分析,有注释
- LeetCode 328 odds and even numbers
- Problem--318A--Codeforces--A. Even Odds
- codeforces 318 A.Even Odds B.Sereja and Array
- Codeforces Round #188 (Div. 2) A.Even Odds
- Codeforces Round #188 (Div. 2) / 318A Even Odds(简单数学)
- even
- even
- odds and ends
- 运算符重载时到底发生了什么?【DEBUG】
- 黑马程序员——线程
- python join 和 split的常用使用方法
- STL源码剖析之一:概论
- string of power
- [选拔赛] Even Odds
- Linux新手入门:通过chmod改变文件权限
- 19 Tools to Test your Site for Mobile Devices
- [选拔赛]Strings of Power
- Linux内核模块基础
- gedit打开txt乱码
- ALV如何取数实例
- 在easyui-combobox多选模式下加入选择所有选项
- 每日学习心得:找不到类型{0},它在 ServiceHost 指令中提供为 Service 特性值,或在配置元素...中提供,cellspacing、rowspacing属性