彩色项链
来源:互联网 发布:ov7670 51单片机引脚图 编辑:程序博客网 时间:2024/04/27 19:23
题目描述:
一条项链由N个珠子连接而成,编号依次为0, 1, 2, …, N-1。每个珠子的颜色用0~9之间的一位数字来表示(因此,可用的颜色一共有10种)。一条长度为4的项链如下图所示:(圆圈中的数字表示颜色,圆圈旁边的数字为珠子的编号)
现在有一台自动生产项链的机器,它的结构和工作方式如下所述:
机器的核心控制部件主要包括:一个CPU、一个整数寄存器START、和存储器S。
机器内部固化有一段程序,由CPU解释执行。该程序的输入是长度为N的十进制数字序列A,输出是另一个长度为N的十进制数字序列B。每次执行程序前将S初始化为输入序列A;程序结束后把S作为输出串B。START初始化为0。
程序包含M条指令,顺序编号为1~M。指令共有5种,以下是指令的格式和功能:(尖括号<>表示指令参数,都是整数)
编号
功能
格式
说明
1
设置寄存器
SETSTART <a> <b>
设置START的值:从S的第a位开始取连续b位得到的十进制整数(可能大于N-1)。
0<=a<=N-1,1<=b<=min(8, N)
2
循环移位
SHIFT <L> <x>
把S从第START位开始的连续L 位,循环移位|x|位。x>0时右移,x<0时左移。
2<=L<=min(10, N),1<=|x|<=L-1
3
乘法
MUL <L> <x>
把S从第START位开始的连续L位当做原始串(L位十进制整数),将其乘以x以后保留结果的最低L位,替换原始串。
1<=x<=9,1<=L<=min(10, N)
4
条件
ONDIGIT <x> <y> <z>
如果S的第x位等于y,则跳转到第z条指令。
0<=x<=N-1,0<=y<=9,1<=z<=M。z大于当前指令序号, 即不会往回跳转。
5
终止
END
仅作为最后一条语句出现,程序终止。
由于项链是环型的,因此第i位和第i+kN位(k为整数)代表数字序列的同一位置。例如当N=4时,第6位和第2位是等价的。
下面是一个程序的例子:
MUL 3 2
SETSTART 2 1
ONDIGIT 0 4 1
SHIFT 3 –2
END
机器启动的时候,输入一个数字串S0,执行程序得到一个新的数字序列S1并生产出S1代表的项链来,以后机器每生产出一条新项链Sn,就把Sn对应的数字序列作为输入重新执行一遍程序,得到一个新的数字序列Sn+1并生产出新的项链。
由于长度为N的项链种类数目是有限的(至多10N种不同的项链),因此如果让机器一直工作下去,某些种类的项链会被生产出无限多条。编程计算出这些将被无限生产出的项链有多少种。在本题中,可以被生产出来的项链种类总数保证不超过106。
大致思路:
考查的是floyd判圈算法。大概的意思是,两个小孩一起跑步,一个的速度是另一个的两倍。如果快的追上慢的,那么有圈。
代码示例:
#include<stdio.h> /* Parameters: .in .out .ans Eval: -first line: score -second line: message*/ void main(int argc, char * argv[]){ FILE*out, *ans, *eval; intscore; intans1, ans2; out= fopen(argv[1], "r"); ans= fopen(argv[2], "r"); eval= fopen("/tmp/_eval.score", "w"); if(out== NULL){ fprintf(eval,"0\nOutput file not found!\n"); fclose(eval); }else{ fscanf(out,"%d", &ans1); fscanf(ans,"%d", &ans2); if(ans1== ans2) fprintf(eval,"10\nCorrect!\n"); else fprintf(eval,"0\nWrong Answer!"); fclose(eval); } fclose(out); fclose(ans);}
注:这是某年IOI的题目~~~~~~代码不是我自己写的,是某大神给的标程代码……
- 彩色项链
- 彩色宝石项链
- 彩色宝石项链-搜狐编程
- 彩色宝石项链C/C++解决
- 搜狐笔试题目一彩色宝石项链
- 搜狐[编程题]彩色宝石项链.有一条彩色宝石项链,是由很多种不同的宝石组成的,包括红宝石,蓝宝石,钻石,翡翠,珍珠等
- 能量项链
- 能量项链
- 能量项链
- swun 项链
- [Sdoi2013]项链
- 能量项链
- 能量项链
- 能量项链
- CodeVS3785 项链
- 能量项链
- 【SDOI2013】项链
- [GDKOI2016]项链
- 捡骨头(hdu2602)
- 金币(hdu1114)
- 逆序对(hdu2838)
- 开关
- 采药
- 彩色项链
- 阿凡提的烦恼
- 敌兵布阵
- 第k极值
- CSS 实现图片灰度效果 兼容各种浏览器
- 划分数
- 一句话摘录(软件工程)
- Subsequence
- a^b