#include <iostream>
#include <string>
using namespace std;
int judge(int i)
{
int ans=0;
while(i)
{
if(i%2==1) ans++;
i=i/2;
}
return ans;
}//转化为二进制并计数1的个数(实质就是十进制转二进制的连除法)
void solve()
{
string s;
cin>>s;
for(int i=1;i<=s.size();i++)
{
if(judge(i)%2==0) cout<<s[i-1];
else
{
s[i-1]=s[i-1]-32;
cout<<s[i-1];
}
}
cout<<endl;
}
int main()
{
int T;
cin>>T;
while(T--) solve();
return 0;
}
利用十进制转二进制的连除法来计算1的个数

京公网安备 11010502036488号