CF261C.Maxim and Matrix
普及+/提高
通过率:0%
时间限制:2.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
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".
马克西姆喜欢以一种特殊的方式填充矩阵。以下是填充一个大小为 (m+1)×(m+1) 的矩阵的伪代码:

马克西姆请你计算:在 1≤m≤n 的范围内,有多少个整数 m,使得最终得到的矩阵中第 m+1 行所有单元格的数值之和恰好等于 t。
表达式 x xor y 表示对整数 x 和 y 执行按位异或(exclusive OR)运算。该运算在所有现代编程语言中均存在。例如,在 C++ 和 Java 中用字符 ^ 表示,在 Pascal 中用 xor 表示。
输入格式
A single line contains two integers n and t (1 ≤ n, t ≤ 1012, 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.
一行包含两个整数 n 和 t(1 ≤ n, t ≤ 1012,且 t ≤ n + 1)。
请注意,在 C++ 中读写 64 位整数时,请勿使用 %lld 说明符。推荐使用 cin、cout 流或 %I64d 说明符。
输出格式
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
输入解题思路,AI测评打分。不知道怎么写?