阿里笔试 3.14 T1

Posted 黑桃_K_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阿里笔试 3.14 T1相关的知识,希望对你有一定的参考价值。

题目描述:
小红拿到了一个16进制数,她想知道该数转为二进制以后有多少个1?

输入描述:
一个字符串,用来表示16进制数。一定是0x开头,从第三个字符开始,每个字符一定是’0’-‘9’或者’a’-‘f’,字符串的长度不超过20000。

//输入
0x3f

//输出

6

//说明:16进制的值是63,转化为二进制后有61

//输入
0xeeeeedddddccccc11111

//输出
45
//说明
#include<iostream>
#include<string>
using namespace std;
int main() 
	std::string s;
	getline(cin, s);
	//10111
	int arry[] = 0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4;
	int index;
	int sum = 0;
	for (int i = 2; i < s.size(); ++i) 
		if (s[i] >= 'a' && s[i] <= 'f')
			sum += arry[s[i] - 'a' + 10];
		else
			sum += arry[s[i] - '0'];
	
	cout << sum;
	return 0;

以上是关于阿里笔试 3.14 T1的主要内容,如果未能解决你的问题,请参考以下文章

阿里笔试 3.14 T2

阿里笔试 3.14 T2

阿里笔试——重庆阿里笔试题总结

阿里笔试——北京阿里笔试题总结

阿里前端笔试总结

阿里2015 在线笔试