Start: Mar, 06, 2018 09:46:00
计算机161 算法分析与设计 第一次实验课作业(吴银杰、张凯庆)
End: Mar, 10, 2018 10:00:00
Time elapsed:
Time remaining:

Problem_ID: E
Result: Accepted
Time: 209ms
Memory: 9584kB
Author: txd19980421
In contest: 1141

import java.util.Scanner;

public class Main {
	public int power(int a, int b) {
		int rs=1;
		for(int i=0; i<b; i++) {
			rs*=a;
		}
		return rs;
	}
	public void hexToBin(String a, int[] b) {
		int k=0;
		for(int i=0; i<a.length(); i++) {
			int num = a.charAt(i) - '0' > 9 ? 10 + a.charAt(i) - 'a' : a.charAt(i) - '0';
			String n = Integer.toBinaryString(num);
			for(int j=0; j<4; j++) {
				if(j<4-n.length()) b[k++]=0;
				else b[k++] = n.charAt(j-(4-n.length()))-'0';
			}
		}
	}
	
	public void replace(int m, int k, int[] b) {
		String n = Integer.toBinaryString(k);
		for(int i=0; i<m; i++) {
			if(i<m-n.length()) b[i]=0;
			else b[i]=n.charAt(i-(m-n.length()))-'0';
		}
	}
	
	public StringBuilder binToHex(int[] b) {
		StringBuilder c= new StringBuilder("");
		for(int i=0; i<8; i++) {
			int sum=0;
			for(int j=4*i+3; j>=4*i; j--) {
				sum=sum+power(2,4*i+3-j)*b[j];
			}
			char ch = sum > 9 ? (char)('a' + sum - 10) : (char)('0' + sum);
			c.append(ch);
		}
		return c;
	}
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		Main main = new Main();
		int T = in.nextInt();
		String a;                  
		int[] b = new int[32];		//存放2进制的数据
		
		int m,k;
		for(int i=0; i<T; i++) {
			a = in.next();
			m = in.nextInt();
			k = in.nextInt();
			
			main.hexToBin(a, b);
			main.replace(m, k, b);
			System.out.println(main.binToHex(b).toString());
			
		}
	}
	
}