标题:[讨论]浙江大学一道ACM题
只看楼主
iwfy
Rank: 1
等 级:新手上路
威 望:2
帖 子:888
专家分:0
注 册:2007-2-23
 问题点数:0 回复次数:18 
[讨论]浙江大学一道ACM题
http://acm.zju.edu.cn/show_problem.php?pid=2805
不知道这道题要干什么,请高手翻译一下,大家都来做做
我用呀虎字典翻译整个网页,还不如我猜的准呢

[此贴子已经被作者于2007-3-30 8:50:21编辑过]

搜索更多相关主题的帖子: 浙江大学 ACM 网页 php acm 
2007-03-29 17:17
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
得分:0 
Brian Huck发明了一种新型的节能电脑,如果使用当前的CMOS装置处理器,就会有一部分的电功率在每次把一bit中的0转换成1或把1转换成0的时候损耗掉,而Brian的新型的储存心片只储存0,所有的被储存在nullary(这个我也不知道什么意思)表格中,正如左边的图所示。
它是一个64-nit的模型其中有分别用26个字母为名称的26个寄存器,每个寄存器最多能储存64个nit,如果超出就会导致运行时候出现错误,他同样也设计了标志符寄存器,标志符寄存器只能储存一个0或什么也没有,
操作符号说明(有点象汇编)
如下:
A 就是把寄存器中的值加一个0,(根据左边的图表所示其实就是加1)用c表达为a++
a 首先把标志符寄存器清空,也就是变成0(是我们所说的0而不是又边表格中一个0所代表的1),同时如果在A寄存器中有0的话就从中移出一个个flag寄存器,(这个时候flag寄存器中就有一个0了,代表的也就是1,同时A寄存器就少一个0,根据表格也就是减1)用c表达flag=0;if(a>0){flag=1;a--};
( 如果flag寄存器是空的,就执行“)”后面的代码,如果flag非空,就清空。
) 跳到“(”;
一写例子:
Brain提供了一写程序来演示他的电脑的简单之处。你的任务就是个他的电脑写一个排序程序。由于其内存有限所以你写的程序最多只能有5432个操作符。同时你的程序在任何的输入数据情况下运行不能超过(这个数字看不清)步,
我详细的讲一下下面的意思吧
b(b)a(Ba) 为了简单假设B中有3个0,b代表从b中移出一个给flag,这时候flag就是一个0,也就是1,接下来是(,因为flag是1所以先flag=0再执行b,也就是b在减1,同时flag又变成了1接下来是),这时候flag还是1,继续循环,直到B中没有0,这时候flag就是0,所以跳过“)”,然后就是A中减一个0给flag,接着进入循环,括号中只多了一个B操作,就是B寄存器加1,最终就是把A传给B,
后面的就不分析了
注意:请提交能用于此计算机的代码而不是C,C++,JAVA原程序,
输入:
输入24个数分别给A-X,
输出:
输出排序的结果而且,数字只能保存在A-X,中,Y,Z必须留空

2007-03-29 22:46
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
得分:0 

我语文学的有点烂,大家将就


2007-03-29 22:47
iwfy
Rank: 1
等 级:新手上路
威 望:2
帖 子:888
专家分:0
注 册:2007-2-23
得分:0 
多谢crackerwang的翻译,大家努力想,也不负crackerwang的辛苦

英语不好还想学编程??逆天之路,不由分说!! 数学太差还想学编程??离经叛道,义无返顾!!
2007-03-30 00:14
iwfy
Rank: 1
等 级:新手上路
威 望:2
帖 子:888
专家分:0
注 册:2007-2-23
得分:0 
排序最主要是比较大小多少,但只允许用大小写字母跟(),要怎么比较还真难,睡了,明天想吧

英语不好还想学编程??逆天之路,不由分说!! 数学太差还想学编程??离经叛道,义无返顾!!
2007-03-30 01:35
iwfy
Rank: 1
等 级:新手上路
威 望:2
帖 子:888
专家分:0
注 册:2007-2-23
得分:0 

我对此题的理解:题目要求的代码相当与C语言的
int sz[24],flag,Y,Z;
A= sz[a]+=1;

a= flag=0;
if(sz[a]>0)
{
flag=1;
sz[a]-=1;
}

(= while(flag!=0)
{
flag=0;
//"("之后的代码,即C语言的循环体//
}

)= continue;
////////////////////////////////////////////////////////////////////////////
A和B的排序,不知道对不对
//Z里面存放大数Y存放小数
b(Za(Y)b) //把b的值给Z,a的值给Y,如果a里面还有值:
b(Za(Y)b)a(Ba)z(Bz)y(Ay) // A里的剩余值给B,Z值给B,Y值给A,到此实现了AB的排序

题目要求是A--X的排序而且代码数不能超过5432个字符,剩下的更复杂


英语不好还想学编程??逆天之路,不由分说!! 数学太差还想学编程??离经叛道,义无返顾!!
2007-03-30 08:45
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
得分:0 

Important note: You must submit the nullary source code of this

program, and not some Java, C or C++ source code.
这句话我不是很理解,他说的不知道是提交的程序是用这个计算机语言还是用c什么的?感觉有点怪


2007-03-30 12:24
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
得分:0 
排序没有问题,不过要是这样写的话就类似于c中的排序,就这样的排序就要做24!次,每次的操作数还受到输入数据的影响,估计要超过次数

2007-03-30 12:41
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
得分:0 

楼上我说的不对,
so your program must be no longer than 5432 instructions. Also, the running time of your program must be no more than 5 · 106 steps for any possible input,
这一句的意思是最多可以用5432个操作符号,最多能运行5E6次,也就是500万次,看来有可能成功

[此贴子已经被作者于2007-3-30 12:43:49编辑过]


2007-03-30 12:43
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
得分:0 

晕!!!
用冒泡,第一次,从A到X,
第二次,从A到W,
只是操作符号个数还没有办法解决

[此贴子已经被作者于2007-3-30 16:11:53编辑过]


2007-03-30 12:46



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-127835-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.613611 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved