题目描述
著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法表,表中的字母代表数字。 例如:
+ 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进制加法。
输入格式第一行一个整数 n(3≤n≤9)表示行数。
以下 n 行,每行包括 n 个字符串,每个字符串间用空格隔开。
若记 si,j 表示第 i行第 j个字符串,数据保证 s1,1=+,si,1=s1,i,|si,1|=1,si,1!=s1,j(i!=j)。
保证至多有一组解。
输出格式第一行输出各个字母表示什么数,格式如:L=0 K=1
⋯ 按给出的字母顺序排序。不同字母必须代表不同数字。
第二行输出加法运算是几进制的。
若不可能组成加法表,则应输出 ERROR!
。
输入
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
输出
L=0 K=1 V=2 E=3
4
解题方法
1.这个题目有一个小技巧,就是单个字母所代表的数,就是这个字母单独出现的次数减一
2.当统计完所有单独字母的数值之后,下面就要判断进位,如果两个字母的和等于他们的组合的数值,说明整个进制表合理,则输出n-1,否则输出ERROR!(一定记得后面还有个!)
AC代码#include
using namespace std;
char str[10][10][5];
//所有的大写字母ASCII码在100以内
int num[100]={0};
int main()
{
int n;
cin>>n;
for(int i=1;istr[i][j];
}
}
//记录单个字母出现的次数
for(int i=2;i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?