UVA 1262 Password 暴力枚举
Password
This problem will be judged on UVA.
Original ID: 1262
64-bit integer IO format: %lld
Java class name: Main
pid=18400" class="btn" style="">Prev
Shoulder-surfing is the behavior of intentionally and stealthily watching the screen of another person's electronic device, such as laptop computer or mobile phone. Since mobile devices prevail, it is getting serious to steal personal information by shoulder-surfing.
Suppose that we have a smart phone. If we touch the screen keyboard directly to enter the password, this is very vulnerable since a shoulder-surfer easily knows what we have typed. So it is desirable to conceal
the input information to discourage shoulder-surfers around us. Let me explain one way to do this.
You are given a 6 x 5 grid. Each column can be considered the visible part of a wheel. So you can easily rotate
each column wheel independently to make password characters visible. In this problem, we assume that each wheel contains the 26 upper letters of English alphabet. See the following Figure 1.

Assume that we have a length-5 password such as p1 p2 p3 p4 p5.
In order to pass the authentication procedure, we should construct a configuration of grid space where each piappears
in the i-th column of the grid. In that situation we say that the user password is accepted.
Let me start with one example. Suppose that our password was set `COMPU'. If we construct the grid as shown in Figure 2 on next page, then the authentication is successfully processed.

In this password system, the position of each password character in each column is meaningless. If each of the 5 characters in p1 p2 p3 p4 p5 appears
in the corresponding column, that can be considered the correct password. So there are many grid configurations allowing one password. Note that the sequence of letters on each wheel is randomly determined for each trial and for each column. In practice, the
user is able to rotate each column and press ``Enter" key, so a should-surfer cannot perceive the password by observing the 6 x 5grid since there are too
many password candidates. In this 6 x 5 grid space, maximally 65 =
7, 776 cases are possible. This is the basic idea of the proposed password system against shoulder-surfers.
Unfortunately there is a problem. If a shoulder-surfer can observe more than two grid plate configurations for a person, then the shoulder-surfer can reduce the searching space and guess the correct password. Even
though it is not easy to stealthily observe other's more than once, this is one weakness of implicit grid passwords.
Let me show one example with two observed configurations for a grid password. The user password is `COMPU', but `DPMAG' is also one candidate password derived from the following configuration.

You are given two configurations of grid password from a shoulder-surfer. Suppose that you have succeeded to stealthily record snapshots of the target person's device (e.g. smart phone). Then your next task is to
reconstruct all possible passwords from these two snapshots. Since there are lots of password candidates, you are asked for the k-th password among
all candidates in lexicographical order. In Figure 3, let us show the first 5 valid password. The first 5 valid passwords are `ABGAG' , `ABGAS', `ABGAU', `ABGPG' and `ABGPS'.
The number k is given in each test case differently. If there does not exist a k-th
password since k is larger than the number of all possible passwords, then you should print `NO' in the output.
Input
Your program is to read from standard input. The input consists of T test cases. The number of test cases T is
given in the first line of the input. The first line of each test case contains one integer, K, the order of the password you should find. Note that 1
K
7,
777. Next the following 6 lines show the 6 rows of the first grid and another 6 lines represent the 6 rows of the second grid.
Output
Your program is to write to standard output. Print exactly the k-th password (including `NO') in one line for each test case.
The following shows sample input and output for three test cases.
Sample Input
3
1
AYGSU
DOMRA
CPFAS
XBODG
WDYPK
PRXWO
CBOPT
DOSBG
GTRAR
APMMS
WSXNU
EFGHI
5
AYGSU
DOMRA
CPFAS
XBODG
WDYPK
PRXWO
CBOPT
DOSBG
GTRAR
APMMS
WSXNU
EFGHI
64
FGHIJ
EFGHI
DEFGH
CDEFG
BCDEF
ABCDE
WBXDY
UWYXZ
XXZFG
YYFYH
EZWZI
ZGHIJ
Sample Output
ABGAG
ABGPS
NO
Distributed under GPLv3. | Project Homepage | Developer: 51isoft |
Current Style: Cerulean.
/* ***********************************************
Author :CKboss
Created Time :2014年12月15日 星期一 10时08分57秒
File Name :UVA1262.cpp
************************************************ */ #include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <string>
#include <cstdlib>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <cmath> using namespace std; int k;
char m1[10][10],m2[10][10];
vector<char> vc[10];
vector<string> vs;
char str[10]; void dfs(int deep)
{
if(deep==5)
{
string ans;
for(int i=0;i<5;i++)
ans+=str[i];
vs.push_back(ans);
return ;
}
for(int i=0,sz=vc[deep].size();i<sz;i++)
{
str[deep]=vc[deep][i];
dfs(deep+1);
}
} int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout); int T_T;
scanf("%d",&T_T);
while(T_T--)
{
scanf("%d",&k);
for(int i=0;i<6;i++)
scanf("%s",m1[i]);
for(int i=0;i<6;i++)
scanf("%s",m2[i]); for(int j=0;j<5;j++)
{
vc[j].clear();
for(int i=0;i<6;i++)
{
char c1=m1[i][j];
bool flag=false;
for(int i2=0;i2<6&&flag==false;i2++)
{
if(m2[i2][j]==c1) flag=true;
}
if(flag==true)
{
vc[j].push_back(c1);
}
}
} vs.clear();
dfs(0);
sort(vs.begin(),vs.end());
int tt=unique(vs.begin(),vs.end())-vs.begin();
if(k>tt) puts("NO");
else
{
cout<<vs[k-1]<<endl;
}
} return 0;
}
UVA 1262 Password 暴力枚举的更多相关文章
- 紫书 例题 10-8 UVa 1262 (暴力枚举)
递归一遍遍历所有情况就ok了 #include<cstdio> #include<cstring> #define REP(i, a, b) for(int i = (a); ...
- 【暑假】[数学]UVa 1262 Password
UVa 1262 Password 题目: Password Time Limit: 3000MS Memory Limit: Unknown 64bit IO Format: %lld ...
- 紫书 例题 10-2 UVa 12169 (暴力枚举)
就是暴力枚举a, b然后和题目给的数据比较就ok了. 刘汝佳这道题的讲解有点迷,书上讲有x1和a可以算出x2, 但是很明显x2 = (a * x1 +b) 没有b怎么算x2?然后我就思考了很久,最后去 ...
- UVA - 1262 Password(密码)(暴力枚举)
题意:给两个6行5列的字母矩阵,找出满足如下条件的“密码”:密码中的每个字母在两个矩阵的对应列中均出现.给定k(1<=k<=7777),你的任务是找出字典序第k小的密码.如果不存在,输出N ...
- UVa 1262 - Password(解码)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- uva 725 DIVISION (暴力枚举)
我的56MS #include <cstdio> #include <iostream> #include <string> #include <cstrin ...
- UVA 1262 Password
https://vjudge.net/problem/UVA-1262 字典序第k小 注意两点: 1. k-- 2.去重 #include<cstring> #include<cst ...
- UVA.12716 GCD XOR (暴力枚举 数论GCD)
UVA.12716 GCD XOR (暴力枚举 数论GCD) 题意分析 题意比较简单,求[1,n]范围内的整数队a,b(a<=b)的个数,使得 gcd(a,b) = a XOR b. 前置技能 ...
- UVA 10012 How Big Is It?(暴力枚举)
How Big Is It? Ian's going to California, and he has to pack his things, including his collection ...
随机推荐
- POJ 3608 Bridge Across Islands (旋转卡壳)
[题目链接] http://poj.org/problem?id=3608 [题目大意] 求出两个凸包之间的最短距离 [题解] 我们先找到一个凸包的上顶点和一个凸包的下定点,以这两个点为起点向下一个点 ...
- 微服务之SpringCloud实战(三):SpringCloud Eureka高可用
高可用Eureka 高可用我就不再过多解释了,Eureka Server的设计一开始就考虑了高可用的问题,在Eureka的服务治理设计中,所有的节点即是服务提供方也是消费方,注册中心也不例外,上一章中 ...
- Spring Boot企业微信点餐系统-第一章-课程介绍
一.项目简介——技术要点 前端和后端: 后端主要技术: 微信接口技术 微信支付 微信扫码登录 微信模板消息推送 开发环境 但实际上我用的环境和这上面还是有点不一样,我服务器用的是win,到时候我会详细 ...
- 原始DAO开发
1,pojo package com.songyan.dao; import com.songyan.pojo.Student; public interface StudentDao { publi ...
- Asp.Net MVC part3 路由Route
路由Route路由规则Route:可以查看源代码了解一下构造方法,需要指定路由格式.默认值.处理器三个值路由数据RouteData:当前请求上下文匹配路由规则而得到的一个对象,可以在Action中通过 ...
- iOS应用程序多语言本地化
多语言在应用程序中一般有两种做法:一.程序中提供给用户自己选择的机会:二.根据当前用户当前移动设备的语言自动将我们的app切换对应语言. 第一种做法比较简单完全靠自己的发挥了,这里主要讲第二种做法,主 ...
- 自问自答:在VB中如何实现像C++一样printf的功能
问: 每个整型都转换成5位的字符串,不足的在前面补0.比如:1转换成“00001”,10转换成“00010”.怎么实现? 答: format(1,"00000") from: 百度 ...
- Android Studio 生成aar包多Module引用问题
问题描述: 有个arr文件被放到Module A中引用,现在Module B又依赖了Module A,则在编译过程中会发生错误,Module B找不到aar文件. 解决办法: 使用相对路径来找到这个a ...
- Flex页面跳转的五种实现方式
Flex页面跳转有很多值得学习的地方,本文向大家介绍一下Flex页面跳转的几种方式,主要包括五种方式,这里为大家一一介绍. AD: 在学习Flex的过程中,你可能会遇到Flex页面跳转的概念,这里 ...
- dwz中弹出的窗口页面如何获取前页面(点击按钮的页面)的元素???
在页面A.jsp中点击一个按钮,使用$.pdialog.open()方法弹出b.jsp页面(对话框窗口),我要在b.jsp中选中值然后关闭窗口(b.jsp)返回值给A.jsp~ =========== ...