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