hdu 5980

来源:互联网 发布:淘宝多久可以追加评论 编辑:程序博客网 时间:2024/06/06 03:07

Find Small A

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 90    Accepted Submission(s): 54


Problem Description
As is known to all,the ASCII of character 'a' is 97. Now,find out how many character 'a' in a group of given numbers. Please note that the numbers here are given by 32 bits’ integers in the computer.That means,1digit represents 4 characters(one character is represented by 8 bits’ binary digits).
 

Input
The input contains a set of test data.The first number is one positive integer N (1≤N≤100),and then N positive integersai (1≤ai≤2^32 - 1) follow
 

Output
Output one line,including an integer representing the number of 'a' in the group of given numbers.
 

Sample Input
397 24929 100
 

Sample Output
3
 

Source
2016ACM/ICPC亚洲区大连站-重现赛(感谢大连海事大学)
 

这道题是个签到题, 但是我也错的很离谱就是数组没有初始化为0, 但是我有记得我初始化了呀 ,郁闷!
这道题的题意就给你一个数字大小在2的32次方以下,  也就是说开个50左右的数组就行了, 然后判断从左边第一位开始直到第八位按照十进制的方法加起来是否等于97;
每八位是一个数字 ,统计一下有几个97;
ac代码:
#include<stdio.h>#include<string.h>#include<stdlib.h>#include<algorithm>#include<iostream>#include<math.h>using namespace std;int sp[2016][2016];int sq[2016][2016];int main(){    int t,i, j, sum, ans, q;    long long n, k;    int s[100];    while(scanf("%d",&t)!=EOF)    {        ans=0;        while(t--)        {            memset(s,0,sizeof(s));            scanf("%lld",&n);            k=0;            while(n>0)            {                s[k]=n%2;                n/=2;                k++;            }            for(i=0;i<k;i+=8)            {                q=1;sum=0;                for(j=i;j<=i+7;j++)                {                    sum+=q*s[j];                    q*=2;                }                if(sum==97)                    ans++;            }        }        printf("%d\n", ans);    }    return 0;}

0 0