地大ACM

来源:互联网 发布:淘宝使用说明 编辑:程序博客网 时间:2024/04/29 15:31

题目一:
输入一个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;}

这里写图片描述

0 0