[NOIP1999]进制位(搜索)
P1013 进制位
题目描述
著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法表,表中的字母代表数字。 例如:
+ L K V E
L L K V E
K K V E KL
V V E KL KK
E E KL KK KV
其含义为:
L+L=L , L+K=K , L+V=V , L+E=E
K+L=K , K+K=V , K+V=E , K+E=KL
…… E+E=KV
根据这些规则可推导出: L=0 , K=1 , V=2 , E=3
同时可以确定该表表示的是4进制加法
//感谢lxy123456同学为本题新加一组数据
输入输出格式
输入格式:
n (n≤9) 表示行数。
以下 n 行,每行包括 n 个字符串,每个字串间用空格隔开。(字串仅有一个为‘+’号,其它都由大写字母组成)
输出格式:
① 各个字母表示什么数,格式如: L=0 , K=1 ,……按给出的字母顺序。
② 加法运算是几进制的。
③ 若不可能组成加法表,则应输出“ERROR!”
输入输出样例
输入样例#1: 复制
5
- L K V E
L L K V E
K K V E KL
V V E KL KK
E E KL KK KV
输出样例#1: 复制
L=0 K=1 V=2 E=3
4
题解
咕咕咕,打打信心题(其实主要是X谷题解没看懂就自己做了)
根据性质做题目
- 0到n-2一定出现过。
- 进制一定是n-1位的
伪证
我要进位啊
仔细想想是不是要有1(前提有0),有1就会有2 and so on.
于是枚举全排列加进制转换就OK了,没什么好讲的。
代码
#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std;
int n,vis[11],vi[27];
char s[11][11][11];
int turn(int x,int y){
int ans=0,len=strlen(s[x][y]);
for(int i=0;i<len;i++){
ans=ans*(n-1)+vi[s[x][y][i]-'A'];
//if(x==3&&y==5)cout<<s[x][y][i]<<' ';
}
//if(x==3&&y==5)cout<<endl;
return ans;
}
bool judge()
{
for(int i=2;i<=n;i++)
{
for(int j=2;j<=n;j++)
{
if(i==j&&i==1)continue;
int v1=vi[s[1][i][0]-'A']+vi[s[j][1][0]-'A'],v2=turn(i,j);
if(v1!=v2){/*cout<<v1<<' '<<v2<<' '<<s[1][i][0]<<' '<<s[j][1][0]<<endl;*/return false;}
}
}
return true;
}
void dfs(int step){
if(step==n+1){
// cout<<"Orz"<<endl;
if(judge())
{
for(int i=2;i<=n;i++)
cout<<s[1][i]<<'='<<vi[s[1][i][0]-'A']<<' ';
cout<<endl<<n-1<<endl;
exit(0);
}
/* for(int i=2;i<=n;i++)
cout<<s[1][i][0]<<'='<<vi[s[1][i][0]-'A']<<' ';
cout<<endl;*/
}
for(int i=0;i<n-1;i++)
if(vis[i]==-1)vis[i]=1,vi[s[1][step][0]-'A']=i,dfs(step+1),vis[i]=-1;
}
int main()
{
cin>>n;
memset(vis,-1,sizeof(vis));
// cout<<vis[0]<<endl;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++){
scanf("%s",s[i][j]);
//if(strlen(s[i][j])==2)vi[s[i][j][1]-'A']=1;
}
dfs(2);
printf("ERROR!\n");
return 0;
}
[NOIP1999]进制位(搜索)的更多相关文章
- 洛谷P1013 进制位
P1013 进制位 题目描述 著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法表,表中的字母代表数字. 例如: + L K V E L L K V E K K V E KL V V E ...
- 洛谷 P1013 进制位
P1013 进制位 题目描述 著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法表,表中的字母代表数字. 例如: + L K V E L L K V E K K V E KL V V E ...
- 【Luogu】P1013进制位(搜索)
题目链接在这里 这题和虫食算比较类似.做完这道题可以去做虫食算.都是搜索一类的题. 这样 我们分析题目可以发现进制只可能是字母的个数,也就是n-1.为什么? 因为题目要求完整的加法表才算数.如果进制低 ...
- 洛谷 P1013 进制位 【搜索 + 进制运算】
题目描述 著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法表,表中的字母代表数字. 例如: + L K V E L L K V E K K V E KL V V E KL KK E E ...
- [NOIP1998] 提高组 洛谷P1013 进制位
题目描述 著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法表,表中的字母代表数字. 例如: L K V E L L K V E K K V E KL V V E KL KK E E K ...
- [洛谷 P1013] NOIP1998 提高组 进制位
问题描述 著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法表,表中的字母代表数字. 例如: L K V E L L K V E K K V E KL V V E KL KK E E K ...
- P1013 [NOIP1998 提高组] 进制位
解析 看到这道题时,有没有想到搜索?然后就是一通码......然后过了. 但是,真的要用搜索吗? 我们可以观察一下.对于n进制中的数ii,如果ii加上某一个数jj会变成两位数,那么可以得到如下不等式: ...
- noip 1998 洛谷P1013 进制位
题目描述 著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法表,表中的字母代表数字. 例如: L K V E L L K V E K K V E KL V V E KL KK E E K ...
- [luoguP1013] 进制位(搜索)
传送门 纯搜索,无优化! #include <cstdio> #include <cstring> #include <iostream> #include < ...
随机推荐
- C#语言基础之第一个C#程序
1.在记事本中编写如下代码,保存为Simple.cs文件. using System; class Hello World{ public static void Main(){ Console.Wr ...
- Windows phone解决GB2312编码问题
环境win8+vse for Windows phone 在网站http://encoding4silverlight.codeplex.com/上点击下载 之后有三个文件big5.bin,DBCSE ...
- JQuery插件的写法 (转:太棒啦!)
JQuery插件写法的总结 最近Web应用程序中越来越多地用到了JQuery等Web前端技术.这些技术框架有效地改善了用户的操作体验,同时也提高了开发人员构造丰富客户 端UI的效率.JQuery本身提 ...
- 路飞学城Python-Day15
模拟实现一个ATM + 购物商城程序 额度 15000或自定义 实现购物商城,买东西加入 购物车,调用信用卡接口结账 可以提现,手续费5% 支持多账户登录 支持账户间转账 记录每月日常消费流水 提供还 ...
- Java 二进制,八进制,十进制,十六进制转换
A.十进制转换其他 十进制转成二进制 Integer.toBinaryString(int i) 十进制转成八进制 Integer.toOctalString(int i) 十进制转成十六进制: ...
- Java中的字符串常量池和JVM运行时数据区的相关概念
什么是字符串常量池 JVM为了减少字符串对象的重复创建,其维护了一个特殊的内存,这段内存被成为字符串常量池或者字符串字面量池 工作原理 当代码中出现字面量形式创建字符串对象时,JVM首先会对这个字面量 ...
- git checkout -b 报错
有时候在git中checkout -b 出现如下报错 $ git checkout -b test --track origin/master fatal: Cannot update paths a ...
- Qt5的插件机制(1)--Qt 框架中的插件载入机制概述
概述 Qt的源代码中通过 Q<pluginType>Factory.Q<pluginType>Plugin 和 Q<pluginType> 这三个类实现了Qt的插件 ...
- APP-午饭去哪吃
走到这个快节奏的城市中.部门聚餐.朋友吃饭这些都是日常生活中时有发生的事情,往往吃的东西都是千篇一律,图的也仅仅剩下的是环境了.那么.非常纠结常常去的地方,怎么办呢?来吧.我们随机摇一个吧! wate ...
- Linux平台不同解压缩命令的使用方法
作者:郭孝星 微博:郭孝星的新浪微博 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells github:https://github.co ...