当我掏出咖喱棒,没有圣杯能够立在我的面前。对圣杯宝具咖喱棒是saber拥有的一种大规模杀伤性武器,士郎很好奇saber手中的咖喱棒到底有多大威力,于是他开始观察咖喱棒释放时出现的光粒。他认为,咖喱棒的威力值与光粒的数量存在某种关系。光粒的数目是一个很大的整数
x,士郎发现,咖喱棒的威力值恰好是lowbit(x)。即把x转化为2进制后,只保留最低位的1及其后面的0,去掉前面的内容,所代表的10进制数,如6(110)的lowbit为2(10),12(1100)的lowbit为4(100),20(10100)的lowbit也为4(100)。切嗣并没有教士郎怎么使用电脑,所以士郎想请你帮忙算出咖喱棒的威力值,这个威力值可能很大所以你只需要输出它除109+7的余数即可。
字符串除法,转二进制,计算第一次余数为1时做的除法的次数
代码如下:
#include <iostream>
#include <stdio.h>
#include <string>
using namespace std;
int ChuYiTwo(string & num){
int jie=0;
int len = num.size();
int temp;
int yushu;
if( (num[len-1]-'0') % 2 == 0 ){
yushu = 0;
}else{
yushu = 1;
}
for(int i=0;i<len;i++){
temp = num[i] - '0';
temp += jie*10;
jie = temp % 2;
temp = temp/2;
num[i]= temp + '0';
}
return yushu;
}
int main()
{
int t;
string num;
int flag = 1;
scanf("%d",&t);
for(int i=0;i<t;i++){
flag = 1;
cin>>num;
while(ChuYiTwo(num)==0){
flag *= 2;
flag = flag % 1000000007;
}
printf("%d\n",flag);
}
return 0;
}