#include<iostream>
#include<string>
using namespace std;
pair<string,int> dividen(string str,int chushu)
{
string::iterator iter;
string fina;
int yushu=0;
int temp;
for(iter=str.begin();iter!=str.end();iter++)
{
temp=yushu*10+((*iter)-'0');
fina+=(temp/chushu+'0');
yushu=temp%chushu;
}
return make_pair(fina,yushu);
}
string transfer2binary(string str)
{
string strBinary;
while(!str.empty())
{
strBinary+=(dividen(str,2).second+'0');
str=dividen(str,2).first;
if(str[0]=='0')
str.erase(str.begin());
}
return strBinary;
}
int main()
{
int T;
string str;
cin>>T;
for(int i=1;i<=T;i++)
{
cin>>str;
string sss=transfer2binary(str);
cout<<"Case "<<i<<": "<<sss.find('1')+1<<endl;
if(i!=T)
cout<<endl;
}
return 0;
}
封装除法/( (string)string/int) 以及取模mod 运算((int) string%int):
pair<string,int> dividen(string str,int chushu)
{
string::iterator iter;
string fina;
int yushu=0;
int temp;
for(iter=str.begin();iter!=str.end();iter++)
{
temp=yushu*10+((*iter)-'0');
fina+=(temp/chushu+'0');
yushu=temp%chushu;
}
while (fina[0]=='0') //cut the string that begining with n numbers of zores.
{
if(fina.length()==1) break;
fina=fina.substr(1,fina.length());
}
return make_pair(fina,yushu); // temp.first and temp.second
}
pair<string,int>temp=dividen(str,intt);
cout<<temp.first<<" "<<temp.second<<endl;