PTA刷题Basic篇——1057.数零一——Day(29)
程序员文章站
2022-07-15 12:31:45
...
问题描述
将输入的英文字母转化为对应的ASCII码并加和。将结果转化为二进制,统计0和1的数目。
题目分析
我们可以看出来给定的PAT (Basic)是含有空格的字符串,所以我们不能通过cin输入,只能通过getline输入这个字符串。然后遍历字符串,如果字符在A-Z之间,就将其变为int类型-64,如果在a-z之间,就将其变为int类型-96.否则我们就跳过。将这些int类型的数据加和得到一个sum.
然后写一个函数可以将这个这个sum转化为二进制数字,并统计内部的0和1的数目。
代码
#include <iostream>
#include <vector>
using namespace std;
vector<int>rest;
void binary(int sum)
{
while(sum >= 1)
{
int res = sum % 2;
sum = sum / 2 ;
rest.push_back(res);
}
}
int main()
{
string s;
getline(cin,s);
int sum = 0;
for(int i = 0;i < s.length();i++)
{
if(s[i] >= 'A' && s[i] <= 'Z')
sum+=int(s[i]) - 64;
else if(s[i] >= 'a' && s[i] <= 'z')
sum+=int(s[i]) - 96;
else
continue;
}
binary(sum);
int one,zero = 0;
for(int i = 0;i < rest.size();i++)
{
if(rest[i] == 1)
one += 1;
else
zero += 1;
}
cout<<zero<<" "<<one;
return 0;
}
答题用时10min
Q57——finish√
上一篇: 创业 - 在路上