疼讯2017秋招编程2019-9-18

游戏里面有很多各式各样的任务,其中有一种任务玩家只能做一次,这类任务一共有1024个,任务ID范围[1,1024]。请用32个unsigned int类型来记录着1024个任务是否已经完成。初始状态都是未完成。 输入两个参数,都是任务ID,需要设置第一个ID的任务为已经完成;并检查第二个ID的任务是否已经完成。 输出一个参数,如果第二个ID的任务已经完成输出1,如果未完成输出0。如果第一或第二个ID不在[1,1024]范围,则输出-1。

输入描述:
输入包括一行,两个整数表示人物ID.

输出描述:
输出是否完成

输入例子1:

1024 1024

输出例子1:

1

思路: 每个int数值中存储32个游戏,搞成按位看是否完成,例如,前32个游戏中只有第三个游戏完成了,那么 设置game[0]= game[0] + 10^3;

import java.util.*;
public class Main{
    private int[] task = new int[32]; //一个int存储32个数据

    public void setTask(int t) {
        if(getTask(t)==0){
            int k = t/32-1;
            int n = t%32;
            int m = 1;
            for (int i =1;i<n;i++)
                m = m*10;
            this.task[k] += m;
        }
    }
    public int getTask(int t) {
        int k = t/32-1;
        int n = t%32;
        int m = 1;
        for (int i =1;i<n;i++)
            m = m*10;
        return (task[k]/m)%10;
    }
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        Main g = new Main();
        int a = in.nextInt();
        int b = in.nextInt();
        if(a>0 && a<1025 && b>0 && b<1025){
            g.setTask(a);
            System.out.println(g.getTask(b));
        }else{
            System.out.println(-1);
        }

    }
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务