返回信息流#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int t;
scanf("%d",&t);
getchar();
for(int j=1;j<=t;j++)
{
int m;
scanf("%d",&m);
getchar();
int high[4]={0};
int low[4]={0};
for(int i=1;i<=m;i++)
{
char cha[50];
gets(cha);
int l=strlen(cha);
if(cha[0]=='M')//mov instruction
{
if('A'<=cha[7]&&cha[7]<='D')
{
if(cha[8]=='H')
high[cha[4]-'A']=high[cha[7]-'A']; //MOV AH,BH;
else if(cha[8]=='L')
low[cha[4]-'A']=low[cha[7]-'A']; //MOV AL,BL;
else
{
high[cha[4]-'A']=high[cha[7]-'A'];//MOV AX,BX;
low[cha[4]-'A']=low[cha[7]-'A'];
}
}
else
{
int temp=0;
if('0'<=cha[l-1]&&cha[l-1]<='9')// decimal number
{
int k=7;
while(k<=l-1)
{
temp=(cha[k]-'0')+temp*10;
k++;
}
}
else
{
int k=l-2;
int del=1;
if(cha[l-1]=='B')//binary number
{
while(cha[k]!=',')
{
temp+=(cha[k]-'0')*del;
del*=2;
k--;
}
}
else
{
while(cha[k]!=',')
{
int a;
if('0'<=cha[k]&&cha[k]<='9')//16
a=cha[k]-'0';
else
a=cha[k]-'A'+10;
temp+=a*del;
del*=16;
k--;
}
}
}
if(cha[5]=='X')
{
high[cha[4]-'A']=temp/256;
low[cha[4]-'A']=temp%256;
}
else if(cha[5]=='H')
high[cha[4]-'A']=temp;
else
low[cha[4]-'A']=temp;
}
}
else //add instruction
{
if('A'<=cha[7]&&cha[7]<='D')
{
if(cha[8]=='H')
high[cha[4]-'A']+=high[cha[7]-'A'];
else if(cha[8]=='L')
low[cha[4]-'A']+=low[cha[7]-'A'];
else
{
high[cha[4]-'A']+=high[cha[7]-'A'];
low[cha[4]-'A']+=low[cha[7]-'A'];
high[cha[4]-'A']+=low[cha[4]-'A']/256;
low[cha[4]-'A']%=256;
}
}
else
{
int temp=0;
if('0'<=cha[l-1]&&cha[l-1]<='9')// decimal number
{
int k=7;
while(k<=l-1)
{
temp=(cha[k]-'0')+temp*10;
k++;
}
}
else
{
int k=l-2;
int del=1;
if(cha[l-1]=='B')
{
while(cha[k]!=',')
{
temp+=(cha[k]-'0')*del;
del*=2;
k--;
}
}
else
{
while(cha[k]!=',')
{
int a;
if('0'<=cha[k]&&cha[k]<='9')
a=cha[k]-'0';
else
a=cha[k]-'A'+10;
temp+=a*del;
del*=16;
k--;
}
}
}
if(cha[5]=='H')
high[cha[4]-'A']+=temp;//ADD AH,TEMP;
else if(cha[5]=='L')
low[cha[4]-'A']+=temp;//ADD AL,TEMP;
else
{
low[cha[4]-'A']+=(temp%256);
high[cha[4]-'A']+=(temp/256);//ADD AX,TEMP;
}
}
}
}
int ax,bx,cx,dx;
ax=high[0]*256+low[0];
bx=high[1]*256+low[1];
cx=high[2]*256+low[2];
dx=high[3]*256+low[3];
printf("%d %d %d %d\n",ax,bx,cx,dx);
}
return 0;
}
为什么wa?
这是一条镜像帖。来源:北邮人论坛 / acm-icpc / #89091同步于 2016/3/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ACM_ICPC机器人发帖
BUPTOJ 279 汇编-计算机 2014,模拟题
jichengpeng
2016/3/12镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复