1 ADD R1,R2 0 0000010000100010 0 1111111111111111
0000010000100010 ADD R1,R2 Error!
#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
using namespace std;
string s;
int main()
{
int n;
while(~scanf("%d",&n))
{
if(n==0)
{
cin>>s;
if(s.size()>16)
{
printf("Error!\n");
continue;
}
int a=0,b=0,c=0;
for(int i=5; i>=0; i--)
{
if(s[i]-'0'==1)
{
a+=(1<<(5-i));
}
}
for(int i=10; i>=6; i--)
{
if(s[i]-'0'==1)
{
b+=(1<<(10-i));
}
}
for(int i=15; i>=11; i--)
{
if(s[i]-'0'==1)
{
c+=(1<<(15-i));
}
}
if(a==1&&b>0&&c>0)
{
printf("ADD R%d,R%d\n",b,c);
}
else if(a==2&&b>0&&c>0)
{
printf("SUB R%d,R%d\n",b,c);
}
else if(a==3&&b>0&&c>0)
{
printf("DIV R%d,R%d\n",b,c);
}
else if(a==4&&b>0&&c>0)
{
printf("MUL R%d,R%d\n",b,c);
}
else if(a==5&&b>0&&c>0)
{
printf("MOVE R%d,R%d\n",b,c);
}
else if(a==6&&b>0&&c==0)
{
printf("SET R%d\n",b);
}
else
printf("Error!\n");
}
else
{
char s1,s2,temp,temp2;
int x,y;
cin>>s;
int a[10];
int b[10];
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
if(s=="ADD")
{
scanf("%c%c%d%c%c%d",&temp2,&s1,&x,&temp,&s2,&y);
// printf("%d %d\n",x,y);
printf("000001");
for(int i=4; i>=0; i--)
{
if(x%2)
a[i]=1;
else
a[i]=0;
x=x/2;
}
for(int i=4; i>=0; i--)
{
if(y%2)
b[i]=1;
else
b[i]=0;
y=y/2;
}
for(int i=0; i<=4; i++)
printf("%d",a[i]);
for(int i=0; i<=4; i++)
printf("%d",b[i]);
printf("\n");
}
else if(s=="SUB")
{
scanf("%c%c%d%c%c%d",&temp2,&s1,&x,&temp,&s2,&y);
// printf("%d %d\n",x,y);
printf("000010");
for(int i=4; i>=0; i--)
{
if(x%2)
a[i]=1;
else
a[i]=0;
x=x/2;
}
for(int i=4; i>=0; i--)
{
if(y%2)
b[i]=1;
else
b[i]=0;
y=y/2;
}
for(int i=0; i<=4; i++)
printf("%d",a[i]);
for(int i=0; i<=4; i++)
printf("%d",b[i]);
printf("\n");
}
else if(s=="DIV")
{
scanf("%c%c%d%c%c%d",&temp2,&s1,&x,&temp,&s2,&y);
// printf("%d %d\n",x,y);
printf("000011");
for(int i=4; i>=0; i--)
{
if(x%2)
a[i]=1;
else
a[i]=0;
x=x/2;
}
for(int i=4; i>=0; i--)
{
if(y%2)
b[i]=1;
else
b[i]=0;
y=y/2;
}
for(int i=0; i<=4; i++)
printf("%d",a[i]);
for(int i=0; i<=4; i++)
printf("%d",b[i]);
printf("\n");
}
else if(s=="MUL")
{
scanf("%c%c%d%c%c%d",&temp2,&s1,&x,&temp,&s2,&y);
// printf("%d %d\n",x,y);
printf("000100");
for(int i=4; i>=0; i--)
{
if(x%2)
a[i]=1;
else
a[i]=0;
x=x/2;
}
for(int i=4; i>=0; i--)
{
if(y%2)
b[i]=1;
else
b[i]=0;
y=y/2;
}
for(int i=0; i<=4; i++)
printf("%d",a[i]);
for(int i=0; i<=4; i++)
printf("%d",b[i]);
printf("\n");
}
else if(s=="MOVE")
{
scanf("%c%c%d%c%c%d",&temp2,&s1,&x,&temp,&s2,&y);
// printf("%d %d\n",x,y);
printf("000101");
for(int i=4; i>=0; i--)
{
if(x%2)
a[i]=1;
else
a[i]=0;
x=x/2;
}
for(int i=4; i>=0; i--)
{
if(y%2)
b[i]=1;
else
b[i]=0;
y=y/2;
}
for(int i=0; i<=4; i++)
printf("%d",a[i]);
for(int i=0; i<=4; i++)
printf("%d",b[i]);
printf("\n");
}
else if(s=="SET")
{
scanf("%c%c%d",&temp2,&s1,&x);
// printf("%d %d\n",x,y);
printf("000110");
for(int i=4; i>=0; i--)
{
if(x%2)
a[i]=1;
else
a[i]=0;
x=x/2;
}
for(int i=0; i<=4; i++)
printf("%d",a[i]);
for(int i=0; i<=4; i++)
printf("0");
printf("\n");
}
}
}
return 0;
}
hdu 5083 Instruction(Bestcoder Round #15)
原文地址:http://blog.csdn.net/caduca/article/details/40474211