HDU

来源:互联网 发布:小电影下载软件 编辑:程序博客网 时间:2024/05/22 14:38

题目描述:点击打开链接


给你一个数化成二进制,每八位截断单独成为一个数,问这些所有数中一共出现了多少次97。这里就需要考虑一下位运算的问题,首先考虑十进制状态,我们要得到一个数的后两位怎么办,对100取模,要舍弃后两位呢,除以100,这里100其实是10^2。那么这个结论其实转移到二进制状态是同样适用的,我们要得到二进制状态下的后八位,实际上直接对2^8取模就好了,那么这个题实际上就已经解决了。

AC代码:

#include<iostream>#include<sstream>#include<cstdio>#include<cstring>#include<string>#include<cmath>#include<vector>#include<stack>#include<queue>#include<algorithm>using namespace std;const int MOD=1e9+7;const int MAXM=1e5;int n;int lit1,lit2,lit3;void init(){    lit1=1<<8;    lit2=1<<16;    lit3=1<<24;}int main(){    init();    while(scanf("%d",&n)!=EOF)    {        int x;        int ans=0;        while(n--) {            scanf("%d",&x);            if (x<lit1) {                if (x==97) ans++;            }            else if (x>=lit1&&x<lit2) {                if (x%lit1==97) ans++;                if (x/lit1==97) ans++;            }            else if (x>=lit2&&x<lit3) {                if (x%lit1==97)  ans++;                x=x/lit1;                if (x%lit1==97) ans++;                if (x/lit1==97) ans++;            }            else {                if (x%lit1==97) ans++;                x=x/lit1;                if (x%lit1==97) ans++;                x=x/lit1;                if (x%lit1==97) ans++;                if (x/lit1==97) ans++;            }        }        printf("%d\n",ans);    }    return 0;}


原创粉丝点击