Start: Jan, 08, 2018 19:10:00
2017年秋季学期程序设计基础(C语言)期末考试
End: Jan, 08, 2018 21:40:00
Time elapsed:
Time remaining:

Problem_ID: H
Result: Accepted
Time: 6ms
Memory: 1092kB
In contest: 1139

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main()
{
	int t,i;
	scanf("%d",&t);
	getchar();
	while(t--)
	{
		char a[20];
		int tdz[64];
		scanf("%s",a);
		for(i=0;i<8;i++)
		{
			int c;
			if(a[i]>='0'&&a[i]<='9')
				c=a[i]-'0';
			else if(a[i]=='a')
				c=10;
			else if(a[i]=='b')
				c=11;
			else if(a[i]=='c')
				c=12;
			else if(a[i]=='d')
				c=13;
			else if(a[i]=='e')
				c=14;
			else if(a[i]=='f')
				c=15;
			tdz[(i+1)*4-1]=c%2;
			c/=2;
			tdz[(i+1)*4-2]=c%2;
			c/=2;
			tdz[(i+1)*4-3]=c%2;
			c/=2;
			tdz[(i+1)*4-4]=c;
		}
		int k,m;
		scanf("%d%d",&k,&m);
		int wdz[64]={0};
		int t=1;
		while(m>=2&&k-t>=0)
		{
			wdz[k-t]=m%2;
			t++;
			m/=2;
		}
		if(k-t>=0)
			wdz[k-t]=m%2;
		for(i=0;i<k;i++)
		{
			tdz[i]=wdz[i];
		}
		int total=0;
		char pr[20];
		for(i=0;i<8;i++)
		{
			total=tdz[(i+1)*4-4]*8+tdz[(i+1)*4-3]*4+tdz[(i+1)*4-2]*2+tdz[(i+1)*4-1];
			if(total==10)
				pr[i]='a';
			else if(total==11)
				pr[i]='b';
			else if(total==12)
				pr[i]='c';
			else if(total==13)
				pr[i]='d';
			else if(total==14)
				pr[i]='e';
			else if(total==15)
				pr[i]='f';
			else
				pr[i]=total+48;
			total=0;
		}
		for(i=0;i<8;i++)
		{
			printf("%c",pr[i]);
		}printf("\n");
	}
	return 0;
}