研究了这么多学术性的问题,小 X 想听个故事来放松一下自己的大脑。而小 X 最喜欢听的是这样一个故事: 从前有座山 , 山 里有座庙, 庙里有个老和尚和小和尚,老和尚给小和尚讲故事: 从前有座山 , 山里有座庙, 庙里有个老和尚和小和尚,老和尚给小和尚讲故事: 从前有座山……
不过讲着讲着,老和尚也有点累了,所以这一次老和尚不给小和尚讲故事了,老和尚要求小和尚去敲木鱼。 这个敲木鱼是有讲究的,在开始敲之前老和尚会告诉小和尚一个数 n。而小和尚在敲的时候, 第一次敲 1 下, 第二次敲 2 下 \dots 第 n 次敲 n 下, 第 n+1 次敲 n 下, 第 n+2 次敲 n-1 下 \dots 第 2 \times n 次敲 1 下,第 2 \times n+1 次敲 1 下, 第 2 \times n+2 次敲 2 下 \dots
如果用一个简单的数列 来表示小和尚 每次敲了多少 下,那应该是: 1, 2, 3, \dots , n-1, n, n, n-1, n-2, \dots , 3, 2, 1, 1, 2, 3, \dots 。
简单说来就是 1~n, n~1, 1~n 一直这么循环地敲下去。
小和尚数着数着就不记得自己敲了多少下了,而他只记得自己刚刚敲完第 m 次。 马上老和尚就要来检查小和尚是不是在认真的敲了,小和尚没办法, 只能求助于你, 希望你能告诉他, 敲完第 m 次的时候,他一共敲了多少下?
输入数据共有一行包含两个用空格隔开的整数表示 n 和 m。
输出数据仅有一行包含一个正整数 ans, 表示最后小和尚一共敲了 ans 下。
注意运算时数据可能比较大, C++ 选手请使用 long long。
3 8
15
【数据范围】
对于 40\% 的数据, 1 ≤ m ≤ 100000;
对于另外 30\% 的数据, n = 2;
对于 100\% 的数据, 1 ≤ n ≤ 10, 1 ≤ m ≤ 1000000000;
【样例解释】
小和尚共敲了 8 次木鱼, 第一次敲了 1 下, 第二次敲了 2 下, 第三次敲了 3 下, 第四次敲了 3 下, 第五次敲了 2 下, 第六次敲了 1 下, 第七次敲了 1 下, 第八次敲了 2 下,总共敲了 15 下。
来源
常州市2016“信息与未来”夏令营选拔赛。
市赛