(2015年郑州轻工业学院ACM校赛题) E 汇编原理
此题属于比较麻烦的模拟题,比赛的时候是队友写的, 比赛结束之后自己也写了一遍,感觉对复杂模拟的掌控还是不行!
解析:
我感觉 ADD操作 和 MOV操作比较类似 所以就写在了一块,MUL操作单独写就行了。
#include<stdio.h>
#include<string.h>
#define maxn 100 long long cpu[][]; int Binary(char str[])
{
int i, sum = ;
for(i=; str[i]; i++)
sum = sum* + str[i]-''; return sum;
} int GetR()
{
int i, len, R;
char str[maxn]; scanf("%s", str); len = strlen(str)-; if(str[] >= 'A' && str[] <= 'D')
{
if(str[] == 'H')
R = cpu[str[]-'A'][];
else if(str[] == 'L')
R = cpu[str[]-'A'][];
else if(str[] == 'X')
R = cpu[str[]-'A'][];
} else if(str[len] == 'H')
{
str[len] = ;
sscanf(str+,"%X", &R);
} else if(str[len] == 'B')
{
str[len] = ;
R = Binary(str+);
}
else
{
sscanf(str+,"%d", &R);
} return R;
} void MOV_ADD(int m,int n,int flag)
{
int R; R = GetR(); if(flag == )
{
cpu[m][n] = R;
}
else
{
cpu[m][n] += R;
} if(n == )
{
cpu[m][] = cpu[m][]/;
cpu[m][] = cpu[m][]%;
}
else
cpu[m][] = cpu[m][]* + cpu[m][];
} void MUL(int m,int n)
{ if(n == || n == )
{
cpu[][] = cpu[m][n]*cpu[][];
}
else
{
cpu[][] = (cpu[m][n]*cpu[][])/;
cpu[][] = (cpu[m][n]*cpu[][])%; cpu[][] = cpu[][]/;
cpu[][] = cpu[][]%;
}
cpu[][] = cpu[][]/;
cpu[][] = cpu[][]%;
} int main()
{
int T, t, k, x;
char str[maxn], str2[maxn];
scanf("%d",&T); while(T--)
{ scanf("%d",&t);
memset(cpu, , sizeof(cpu));
while(t--)
{
scanf("%s%2s", str,str2); k = str2[] - 'A'; if(str2[] == 'X')
x = ;
else if(str2[] == 'H')
x = ;
else if(str2[] == 'L')
x = ; if(strcmp(str,"MOV") == )
{
MOV_ADD(k,x,);
}
else if(strcmp(str,"ADD") == )
{
MOV_ADD(k,x,);
}
else
MUL(k,x);
}
printf("%lld %lld %lld %lld\n",cpu[][], cpu[][], cpu[][], cpu[][]);
}
return ;
}
(2015年郑州轻工业学院ACM校赛题) E 汇编原理的更多相关文章
- (2015年郑州轻工业学院ACM校赛题)H 五子棋
我们最后选题策略失败,选到五子棋这题,没想到这题非常麻烦,最后也没做出来! 比赛结束后发了题解再做才做出来! 不得不说 这题真的很麻烦 一个需要比较细致分类讨论的题目.判定棋盘是否合法应考虑如下几种情 ...
- (2015年郑州轻工业学院ACM校赛题) C 数列
在我们做完B题之后就去看C题了, 发现很多人都已经做出来了, 并且一血还是我们学弟拿的, 感觉这题不难, 我们举了几个例子之后发现全是Alice 然后我们就决定意淫一下,试试看! 没想到就A了 - . ...
- (2015年郑州轻工业学院ACM校赛题) B迷宫
这是个简单的广搜题,注意下一下细节都能写出来, 大多数人都少考虑了一点,就是 假如 我的起始点就有一个机关, 并且不是 1 号机关, 这样的话是无结果的.不懂的可以测试一下代码下面的数据 #inclu ...
- (2015年郑州轻工业学院ACM校赛题) A 彩票
这是个简单的题目,其实就是判断是否是偶数, 对二进行特判一下就行了! 比赛时候我们还错两次................ 一看简单题就想抢一血,谁知到第一次提交CE, 再提交WA 汗........ ...
- (2015年郑州轻工业学院ACM校赛题) J 堆
判断是否是一个堆,把树构造好遍历一遍就OK了 #include<stdio.h> #include<iostream> #include<stack> #inclu ...
- (2015年郑州轻工业学院ACM校赛题)I 旋转图像
矩阵旋转,写一个转 90° 的函数就行了, 注意每次要将 长和宽的值进行交换就行了. #include<stdio.h> #include<iostream> #include ...
- (2015年郑州轻工业学院ACM校赛题) G 矩阵
看这道题的时候就感觉用一点动归思想+暴力 就能过了. #include<stdio.h> #include<iostream> #include<stack> #i ...
- 20170416郑州市轻工业学院ACM校赛
这是个星期天,但是,这种非一线城市,重点城市什么的高中,放假从来不按套路出牌,几乎可以说能给你一天是福气.当然,比县里好的多,问在县里上高中的初中同学,放假更是比我们一天里的午休+晚上吃饭时间还要少. ...
- 第八届郑州轻工业学院ACM(程序设计大赛)校内预选赛
郑州轻工业学院有一个大赛,把几个有趣的题目分享一下.下面是题目连接,喜欢了就点点... 斗破苍穹 礼上往来 统计人数 神の数 炉石传说 Mathematics and Geometry 马拉松后记 斗 ...
随机推荐
- Monkeyrunner入门示例
准备工作1.安装Android SDK2.熟悉MonkeyRunner的API(http://article.yeeyan.org/view/37503/164523)3.一部Android手机或模拟 ...
- 整理Git的命令使用
Git是一个开源的分布式版本号控制系统,用以有效.快速的处理从非常小到非常大的项目版本号管理.Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源代码的版本号 ...
- google(转帖)
本帖最后由 qiushui_007 于 2014-6-10 16:14 编辑 IP Addresses of Google Global Cachewww.kookle.co.nr Bulgaria ...
- Centos清理内存 内存回收释放及内存使用查看的相关命令
在清理前内存使用情况 free -m 用以下命令清理内存 echo 1 > /proc/sys/vm/drop_caches 清理后内存使用情况再用以下命令看看. free –m 多出很多内存了 ...
- BeautifulSoup在Windows下安装(running 2to3)
在windows下安装beautifulsoup经常会出现说是在python3下无法运行Python2的代码,这时需要将Python下的tool下的scripts目录添加到环境变量中,然后运行2to3 ...
- 面试题——分析从输入url到页面返回的过程(或者查询返回过程)
1. You enter a URL into the browser(输入一个url地址) 2.The browser looks up the IP address for the domain ...
- 工时统计的sql练习--包含时间处理
//按月统计,除去周末的考勤,(工时,请假,缺勤) --建表sql 创建[dbo].[AbsenceHourld]CREATE TABLE [dbo].[AbsenceHourld]( [id] [i ...
- Oracle增加自增长列
-- 移除索引drop index TB_1;drop index TB_2 ;alter table TB drop constraint PK_TB; --允许列为空 alter table TB ...
- 计时器(Chronometer)的使用
安卓提供了一个计时器组件:Chronometer,该组件extends TextView,因此都会显示一段文本,但是它显示的时间是从某个起始时间开始过去了多少时间,它只提供了android:forma ...
- 苹果新政,禁止开发者在App中加入检查更新功能
今天妥妥的被拒了,苹果更新了新政策,不能在应用中出现检测更新的功能.AppStore会自动提醒用户更新. 去掉更新按钮,之后再尝试下看能通过不能