题解 | #游戏任务标记#

游戏任务标记

http://www.nowcoder.com/practice/2f45f0ef94724e06a4173c91ef60781c

题解

首先判断输入数字是否在[1,1024]区间内,不在区间内直接输出-1.

1-1024 使用32个unsigned int 表示,每个unsigned int 有32位,表示32个数字的状态。

定义 vector<unsigned int> v(32) 其中 v[0] 表示 1-32,v[1] 表示 33-64,...

假设输入数据为a,b

则 a 在 v[(a-1)/32]中表示,表示a的可以直接用第 a%32位。

代码如下:

#include<bits/stdc++.h>
using namespace std;

int main(){
    int a, b;
    cin >> a >> b;
    if (!(a >= 1 && a <= 1024) || !(b >= 1 && b <= 1024)) {
        cout << -1 << endl;
        return 0;
    }
    vector<unsigned int> v(32);
    
    int x = (a - 1) / 32, y = a % 32;
    v[x] = v[x] | (1 << y);
    
    x = (b - 1) / 32, y = b % 32;
    if (v[x] & (1 << y)) cout << 1 << endl;
    else cout << 0 << endl;
}
全部评论

相关推荐

03-31 00:39
门头沟学院 C++
南岗痞子:不还有俩没结束吗
点赞 评论 收藏
分享
LZHR:老哥你从投递简历测评完到一面中间隔了多久呀,我这边已经过了五天了仍显示简历筛选中是不是就是挂了
腾讯求职进展汇总
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务