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: 4ms
Memory: 1096kB
Author: Sugar
In contest: 1141

#include<stdio.h>
int main(void) {
    int T,m,k,i,flag=0;
    char str[9];
	scanf("%d",&T);
	while(T--){
		scanf("%s%d%d",str,&m,&k);
		int num[32],change[32],num1[32],a[5],b[5],c[5],d[5],e[5],f[5],g[5],h[5],j=0;
		for(i=0;i<8;i++){
			if(str[i]=='0'){
				num[j]=0;num[++j]=0;num[++j]=0;num[++j]=0;
				j++;
			}
			else if(str[i]=='1'){
				num[j]=0;num[++j]=0;num[++j]=0;num[++j]=1;
				j++;
			}
			else if(str[i]=='2'){
				num[j]=0;num[++j]=0;num[++j]=1;num[++j]=0;
				j++;
			}
			else if(str[i]=='3'){
				num[j]=0;num[++j]=0;num[++j]=1;num[++j]=1;
				j++;
			}
			else if(str[i]=='4'){
				num[j]=0;num[++j]=1;num[++j]=0;num[++j]=0;
				j++;
			}
			else if(str[i]=='5'){
				num[j]=0;num[++j]=1;num[++j]=0;num[++j]=1;
				j++;
			}
			else if(str[i]=='6'){
				num[j]=0;num[++j]=1;num[++j]=1;num[++j]=0;
				j++;
			}
			else if(str[i]=='7'){
				num[j]=0;num[++j]=1;num[++j]=1;num[++j]=1;
				j++;
			}
			else if(str[i]=='8'){
				num[j]=1;num[++j]=0;num[++j]=0;num[++j]=0;
				j++;
			}
			else if(str[i]=='9'){
				num[j]=1;num[++j]=0;num[++j]=0;num[++j]=1;
				j++;
			}
			else if(str[i]=='a'){
				num[j]=1;num[++j]=0;num[++j]=1;num[++j]=0;
				j++;
			}
			else if(str[i]=='b'){
				num[j]=1;num[++j]=0;num[++j]=1;num[++j]=1;
				j++;
			}
			else if(str[i]=='c'){
				num[j]=1;num[++j]=1;num[++j]=0;num[++j]=0;
				j++;
			}
			else if(str[i]=='d'){
				num[j]=1;num[++j]=1;num[++j]=0;num[++j]=1;
				j++;
			}
			else if(str[i]=='e'){
				num[j]=1;num[++j]=1;num[++j]=1;num[++j]=0;
				j++;
			}
			else if(str[i]=='f'){
				num[j]=1;num[++j]=1;num[++j]=1;num[++j]=1;
				j++;
			}
		}
		j=0,i=0;
		do {
        	change[j++]=k%2;
        	k/=2;
    	} while(k!=0) ;
		int numlen=j;
		for(j--;j>=0;j--){
			num1[i]=change[j];
			i++;
		}
		if(m==numlen){
			for(i=0;i<m;i++){
    			num[i]=num1[i];
			}
		}
		else if(m>numlen){
			int p=0;
			for(i=0;i<m-numlen;i++)
				num[i]=0;
			for(i=m-numlen;i<m;i++){
				num[i]=num1[p];
				p++;
			}
			
		}
		for(i=0;i<32;i=i+4){
			if(num[i]==0&&num[i+1]==0&&num[i+2]==0&&num[i+3]==0){
				if(flag==0)
					printf("0");
				else
					printf(" 0");
			}
			else if(num[i]==0&&num[i+1]==0&&num[i+2]==0&&num[i+3]==1)
			{
				if(flag==0)
					printf("1");
				else
					printf(" 1");
			}
			else if(num[i]==0&&num[i+1]==0&&num[i+2]==1&&num[i+3]==0)
			{
				if(flag==0)
					printf("2");
				else
					printf(" 2");
			}
			else if(num[i]==0&&num[i+1]==0&&num[i+2]==1&&num[i+3]==1)
			{
				if(flag==0)
					printf("3");
				else
					printf(" 3");
			}
			else if(num[i]==0&&num[i+1]==1&&num[i+2]==0&&num[i+3]==0)
			{
				if(flag==0)
					printf("4");
				else
					printf(" 4");
			}
			else if(num[i]==0&&num[i+1]==1&&num[i+2]==0&&num[i+3]==1)
			{
				if(flag==0)
					printf("5");
				else
					printf(" 5");
			}
			else if(num[i]==0&&num[i+1]==1&&num[i+2]==1&&num[i+3]==0)
			{
				if(flag==0)
					printf("6");
				else
					printf(" 6");
			}
			else if(num[i]==0&&num[i+1]==1&&num[i+2]==1&&num[i+3]==1)
			{
				if(flag==0)
					printf("7");
				else
					printf(" 7");
			}
			else if(num[i]==1&&num[i+1]==0&&num[i+2]==0&&num[i+3]==0)
			{
				if(flag==0)
					printf("8");
				else
					printf(" 8");
			}
			else if(num[i]==1&&num[i+1]==0&&num[i+2]==0&&num[i+3]==1)
			{
				if(flag==0)
					printf("9");
				else
					printf(" 9");
			}
			else if(num[i]==1&&num[i+1]==0&&num[i+2]==1&&num[i+3]==0)
			{
				if(flag==0)
					printf("a");
				else
					printf(" a");
			}
			else if(num[i]==1&&num[i+1]==0&&num[i+2]==1&&num[i+3]==1)
			{
				if(flag==0)
					printf("b");
				else
					printf(" b");
			}
			else if(num[i]==1&&num[i+1]==1&&num[i+2]==0&&num[i+3]==0)
			{
				if(flag==0)
					printf("c");
				else
					printf(" c");
			}
			else if(num[i]==1&&num[i+1]==1&&num[i+2]==0&&num[i+3]==1)
			{
				if(flag==0)
					printf("d");
				else
					printf(" d");
			}
			else if(num[i]==1&&num[i+1]==1&&num[i+2]==1&&num[i+3]==0)
			{
				if(flag==0)
					printf("e");
				else
					printf(" e");
			}
			else if(num[i]==1&&num[i+1]==1&&num[i+2]==1&&num[i+3]==1)
			{
				if(flag==0)
					printf("f");
				else
					printf(" f");
			}
		}
		printf("\n");		
	}
		
    return 0;
}