华师一附中OI组
标题:
虎口脱险(张一飞2000试题)
[打印本页]
作者:
admin
时间:
2018-5-20 13:50
标题:
虎口脱险(张一飞2000试题)
佐尔格成功的盗取了资料后,马上通过无线电将其发送给了WREAMC。他刚发送完毕,就不幸被X星的反间谍人员发现并抓获。不过,佐尔格在被抓获前已将资料销毁,因此,X星军方并不知道佐尔格窃取的是什么资料。
佐尔格被X星的反间谍人员关进了羈押室。幸运的是,在被关之前,佐尔格从看守员那儿偷到了房间的钥匙。
X星的锁和钥匙与地球上的有很大的不同:
X星的锁由两部分组成。第一部分叫锁盘,是由30个小洞排列而成(见图一)。 第二部分叫锁孔,椭圆形,刚好可以插进一片钥匙(见图二)。X星的钥匙有5种形态,每种钥匙都是由5个小球连接而成(见图三)。每种钥匙都可以任意旋转,翻转放入锁盘(见图四)。
开锁的钥匙一共有7片。其中,前两种形态的钥匙各有两片,后三种形态的钥匙各一片。要想开锁,就必须将指定的一片钥匙放入锁孔,再将余下的六片钥匙放入锁盘,填满锁盘上的小洞。¬
为了便于研究,我们将7片钥匙编号。1~5号钥匙对应着图三中的5种形态。6号和7号钥匙分别具有形态1和形态2。
根据锁孔的形态,很容易辨认出要将哪片钥匙放入锁孔。但要将余下6片钥匙放入锁盘,就没那么容易了。
佐尔格使用他随身携带的专用微型电脑,编写了一个求解程序,顺利的打开了房门。你也能编写出来吗?
【输入文件】
输入文件有且仅有一行,即插入锁孔的钥匙的编号。
【输出文件】
输出文件有且仅有一行。
如果无法开锁,输出-1。
否则,根据图四所示的圆圈编号按顺序输出每个圆圈上钥匙的编号。
输出文件中不同的数字用空格分开。
如果有多解,你只需输出其中任意一种。
【输入输出样例】
Input.txt
1
Output.txt
2 7 7 2 2 7 7 2 2 3 7 6 3 3 3 3 6 6 4 4 6 6 5 4 4 4 5 5 5 5
作者:
liubo
时间:
2018-5-20 15:20
#include<iostream>
using namespace std;
int n;
int main(){
cin >> n;
switch(n){
case 1:
cout << "2 7 7 2 2 7 7 2 2 3 7 6 3 3 3 3 6 6 4 4 6 6 5 4 4 4 5 5 5 5";
break;
case 2:
cout << "1 1 3 7 1 3 3 7 7 1 5 3 7 7 1 6 5 3 6 6 6 4 5 6 4 4 5 4 4 5";
break;
case 3:
cout << "1 1 2 7 1 2 2 7 7 1 2 2 7 7 1 6 6 4 5 6 6 4 4 5 6 4 4 5 5 5";
break;
case 4:
cout << "7 7 7 6 7 7 5 1 6 6 6 5 1 1 1 6 3 5 2 2 1 3 5 2 2 3 5 2 3 3";
break;
case 5:
cout << "7 7 7 1 7 7 2 1 1 1 2 2 3 3 6 1 2 2 3 4 6 6 6 3 4 4 6 3 4 4";
break;
case 6:
cout << "2 7 7 2 2 7 7 2 2 3 7 1 3 3 3 3 1 1 4 4 1 1 5 4 4 4 5 5 5 5";
break;
case 7:
cout << "1 1 3 2 1 3 3 2 2 1 5 3 2 2 1 6 5 3 6 6 6 4 5 6 4 4 5 4 4 5";
break;
}
return 0;
}
复制代码
大概这样,也不知道对不对
作者:
admin
时间:
2018-5-20 17:22
这个可能有问题吧 手算的?
欢迎光临 华师一附中OI组 (http://hsyit.cn/)
Powered by Discuz! X3.2