题目一: 输入一个n位的二进制串,将其转换为16进制(0….9 ABCDEF),计算转换后的二进制有多少个洞(0 一个洞,4,一个(陷阱呀,注意4有一个)…). AC代码:
#include <iostream> #include <math.h> using namespace std; int fun(int i) { switch(i) { case 0: return 1; case 4:return 1; case 8:return 2; case 9:return 1; case 10:return 1; case 11:return 2; case 13:return 1; default:return 0; } } int main() { int n = 0; int sum = 0; char a[501]; int temp = 0; int count = 0; while (cin>>n) { cin>>a; for (int i = n-1;i >= 0;--i) { sum +=(a[i]-'0')*pow((double)2,(double)temp); ++temp; if (temp == 4) { count += fun(sum); sum = 0; temp = 0; } if ( i == 0 && temp > 0 && temp < 4) { count += fun(sum); sum = 0; temp = 0; } } cout<<count<<endl; count = 0; } return 0; }