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)$ :

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".

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.
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