有一个 long long 类型的数组 a[]。
在Hikari进行所有操作之前,给定上界参数 v。
Hikari将进行 q 次操作。每次操作为以下两个函数之一:
void Fracture(int u,int p)
{
for (int i=u;i<=v;i+=count(i))
a[i]+=p;
}
long long killTairitsu(long long u)
{
long long ret=0;
for (int i=u;i<=v;i+=count(i))
ret+=a[i];
return ret;
}
上述程序为 C++ 代码,其中 count(i) 表示 i 二进制下 1 的个数,例如 count(0) 的返回值为 0,而 count(10001279) 的返回值为 15。补充:__builtin_popcount(int)可解决count(i)
上述程序中出现的变量 v 即上界参数 v。
Hikari将执行上述操作,并在每次执行 killTairitsu() 函数后,输出函数的返回值。
输入格式
从标准输入中读取数据。
第一行,两个正整数 q,v,表示操作数,以及上界参数。
接下来 q 行,每行为以下二者之一:
1 u p 表示执行 Fracture(u, p);
2 u 表示执行 killTairitsu(u) 并输出一行一个整数,为函数的返回值。
输出格式
在每次执行 killTairitsu() 函数后,输出函数的返回值。
本人已pure memory此题(人话:AC了),但是ftr11只有986(悲