ゼロワンナンバー1057(20分)
指定された文字列のためには、すべてのアルファベットのシーケンス番号(1-26 AZ文字に対応するシーケンス番号は、ケース非感受性)が付加されたタイトルの特許請求の範囲を提示する、10 ^ 5の文字列の長さを超えませんNの整数取得、Nその後番号0、番号1のバイナリ表現を分析します。ストリングPAT(基本)所与例えば、の和である文字の数= 71 16 + 20 + 1 + 1 + 2 + 3 + 9 + 19、及び71は3 0.4である、バイナリ1000111あります1。
入力フォーマット:
入力文字列の終わりを入力する行未満10 ^ 5の長さを与えます。
出力フォーマット:
行数は、隙間によって分離された出力0と1の数を有しています。
サンプル入力:
PAT(基本)
出力サンプル:
34
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
string A;
getline(cin,A);
int N=0,i;
for(i=0;i<A.length();i++){
if(A[i]>='A'&&A[i]<='Z'){
N+=A[i]-'A'+1;
}
if(A[i]>='a'&&A[i]<='z'){
N+=A[i]-'a'+1;
}
}
vector<int> cnt;
while(N!=0){
cnt.push_back(N%2);
N=N/2;
}//处理进制问题没必要过多操作,直接运算即可
int cnt0=0,cnt1=0;
for(i=0;i<cnt.size();i++){
if(cnt[i]==0){
cnt0++;
}
if(cnt[i]==1){
cnt1++;
}
}
cout<<cnt0<<" "<<cnt1;
}