#include<iostream>
#include<cctype> //toupper 变大写
#include<bitset>
using namespace std;
int main()
{//把数组A-Z赋值为1-26
int sum=0; char ch;
while((ch=cin.get())!=EOF)
if(isalpha(ch)) sum+=toupper(ch)-64;
//是字母的话就相加,减去64就是对应的序号
if(sum==0) cout<<"0 0";
else{//0特殊二进制没有1,根据题意输出0,0
size_t pos{0},cnt{};
bitset<64> bits(sum);
while(true){//找出最高位1所在的位置
if(bits.test(pos++)==1) cnt++;
if(cnt==bits.count()) break;
}//ps:bits.count()就是1的个数
cout<<pos-cnt<<' '<<cnt;
}
}
PAT1057乙级 用bitset解决
最新推荐文章于 2023-11-01 20:06:27 发布