游戏里面有很多各式各样的任务,其中有一种任务玩家只能做一次,这类任务一共有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); } } }