测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A8799. Maxim and Matrix

编程题 普及/提高-

题目描述

Maxim loves to fill in a matrix in a special manner. Here is a pseudocode of filling in a matrix of size $(m+1)×(m+1)$ :

![](/uploads/acgo/image/6e1fb98180205194_fe0a040eab42.jpeg)

Maxim asks you to count, how many numbers $m$ $(1<=m<=n)$ are there, such that the sum of values in the cells in the row number $m+1$ of the resulting matrix equals $t$ .

Expression ( $x$ $xor$ $y$ ) means applying the operation of bitwise excluding "OR" to numbers $x$ and $y$ . The given operation exists in all modern programming languages. For example, in languages C++ and Java it is represented by character "^", in Pascal — by "xor".

输入格式

A single line contains two integers $n$ and $t$ $(1<=n,t<=10^{12},t<=n+1)$ .

Please, do not use the %lld specifier to read or write 64-bit integers in C++. It is preferred to use the cin, cout streams or the %I64d specifier.

输出格式

In a single line print a single integer — the answer to the problem.

输入输出样例

输入 #1
1 1
输出 #1
1
输入 #2
3 2
输出 #2
1
输入 #3
3 3
输出 #3
0
输入 #4
1000000000000 1048576
输出 #4
118606527258
上一题 去做题 下一题