桂林医院网站建设,网站 第三方登录,百度地图广告投放,中国建设银行安徽分行网站Tavan–简单的k进制题
呵呵真的简单 也就是考试没做出来罢了#xff0c;不慌不慌#xff0c;奶我一口#xff0c;还能活 【题目摘要】 题目描述 小 Zeljko 一直在阁楼里读他奶奶的旧信#xff0c;并且发现了一个长度为 N 的单词。 不幸的是#xff0c;由于溢出的墨水不慌不慌奶我一口还能活 【题目摘要】 题目描述 小 Zeljko 一直在阁楼里读他奶奶的旧信并且发现了一个长度为 N 的单词。 不幸的是由于溢出的墨水他不知道单词的内容。他把看不清的 M 个字母每 个字母都用一个字符’‘替换后在一张纸上重写了这个词。他把那张纸递给 了他的奶奶对于每个看不清的字母奶奶给了他 K 个不同的可能。在那之后 Zeljko 在笔记本中写下了所有可能的单词并决定仔细查看他们的属性以确 定原始单词是什么。在看到笔记本上写下的单词后他的奶奶意识到他们正在 寻找的是按字典序排列的第 X 个单词。Zeljko 在他们学校学习字母表的那天生 病了所以他要求你帮助他确定原来的单词。 输入 第一行输入包含整数 NMK 和 X1≤N≤500,1≤M≤N1≤K≤26,1≤X≤ 1e9。分别表示单词的长度看不清的字母的数量奶奶给出的字母的数量和 原单词是字典序的第几个。 第二行输入包含一个长度为 N 的字符串由小写英文字母和字符’‘组成。 表示 Zeljko 找到的单词其中字符’表示看不清的字母。 接下来 M 行中的每一行包含一个长度为 K 的字符串由 K 个不同的小写英文 字母组成。第 2i 行的 K 个字母表示第 i 个看不清的 保证 X 总是小于等于能构造出的单词的总数。
输入格式 第一行输入包含整数 NMK 和 X1≤N≤500,1≤M≤N1≤K≤26,1≤X≤ 1e9。分别表示单词的长度看不清的字母的数量奶奶给出的字母的数量和 原单词是字典序的第几个。 第二行输入包含一个长度为 N 的字符串由小写英文字母和字符’‘组成。 表示 Zeljko 找到的单词其中字符’表示看不清的字母。 接下来 M 行中的每一行包含一个长度为 K 的字符串由 K 个不同的小写英文 字母组成。第 2i 行的 K 个字母表示第 i 个看不清的字母的 K 种可能。 保证 X 总是小于等于能构造出的单词的总数。
输出格式 输出一个字符串。表示原本的单词。
样例 样例输入 9 2 3 7 po#olje#i sol znu 样例输出 posoljeni 数据范围与提示 对于 30%的数据M1 并且 K3。 对于另外 30%的数据M1。 数据很简单本宝宝就不再解释了
【想法题解】
此题要解决的就是‘#’所以有脸的字母就已经失宠了不够吸引朕 初拿此题脑子里一定要有暴力的美丽身姿而X的范围可以让你炸爽 可以暴力枚举每一种情况放进一个数组里再来个sort凤舞我考试就是这样的 80%的分就到手了嘿嘿嘿
那么怎么拿呢 brainstorm一波 如果我们将看不清的每一个字母的k种可能按字典序从小到大排序傻子都看得出 整个串字典序最小的就是每一个字母的第一种可能 下一个字典序就让最后一个字母移向下一个 若已经自己到达了第k种就让前一个字母移动一个自己又再次回到第一个如此循环往复… 这个时候这道题的真面目就渐渐显露了 自己满k前一位就进1完全就是k进制法则嘛 那么题目就可以变为有m个进制位x的k进制转换而第i个字母就取第i个进制位上的数
实在码力有限的可以瞅瞅【代码实现】 部分很奇的技巧处理学我 可以换一种方法搞
#include cstdio
#include vector
#include iostream
#include algorithm
using namespace std;
#define MAXN 505
vector char G[MAXN];
string s;
int n, m, k, x, cnt;
int flag[MAXN], choose[MAXN];
int main() {scanf ( %d %d %d %d, n, m, k, x );x --;cin s;for ( int i 0;i s.length();i )if ( s[i] # )flag[ cnt] 1;for ( int i 1;i m;i ) {scanf ( \n );//以前被getchar啃过宝宝有心理阴影for ( int j 1;j k;j ) {char c;scanf ( %c, c );G[i].push_back ( c );}}for ( int i 1;i m;i )sort ( G[i].begin(), G[i].end() );cnt 0;while ( x ! 0 ) {choose[ cnt] x % k;x / k;}cnt 1;for ( int i 0;i s.length();i ) {if ( s[i] # ) {printf ( %c, G[cnt][choose[m - cnt 1]] );cnt ;}elseprintf ( %c, s[i] );}return 0;
}又A一道我们下期再见