[NOIP1998] 提高组 洛谷P1013 进制位
2024-09-07 20:57:06
题目描述
著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法表,表中的字母代表数字。 例如:
- 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进制加法
//感谢lxylxy123456同学为本题新加一组数据
输入输出格式
输入格式:
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
两位及以上的数字忽略,一位的字母若出现n次,则代表n-1。
要判断能否组成加法表(即每一个字母都有对应的数字)
/*by SilverN*/
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
char mp[];
int cnt[];
char ch;
char s[];
int n;
int main(){
scanf("%d\n",&n);
int i,j;
getchar();
n--;
for(i=;i<n;i++){
getchar();
scanf("%c",&ch);
mp[i]=ch;
}
for(i=;i<n;i++){
getchar();
scanf("%c",&ch);
for(j=;j<n;j++){
getchar();
scanf("%s",s);
if(strlen(s)>)continue;
for(int k=;k<n;k++){
if(mp[k]==s[]){
cnt[k]++;
}
}
}
}
for(i=;i<n;i++)
if(!cnt[i]){
printf("ERROR!\n");
return ;
}
for(i=;i<n;i++){
printf("%c=%d ",mp[i],cnt[i]-);
}
printf("\n%d\n",n);
return ;
}
最新文章
- PHP学习笔记:利用时间和mt_rand函数获取随机名字
- use-a, has-a, is-a和实现关系
- SICP 习题 (1.13) 解题总结
- android 基础学习图片六progross
- Asp.net MVC + EF + Spring.Net 项目实践3
- 使用svn与maven管理的项目导入Eclipse,但是与本地svn客户端关联不上?
- nodeppt的使用教程
- 2019春第六周作业Compile Summarize
- JS对url进行编码和解码(三种方式区别)
- cmake方式使用vlfeat
- Python开源框架、库、软件和资源大集合
- PAT 1034 Head of a Gang[难][dfs]
- HBase 安装设置
- flutter控件之RadioButton
- Jenkins操作,实现增删改查
- Chrome浏览器F12讲解
- JavaScript实现单向链表
- Java获取未知类型对象的属性
- JSON字符串书写
- 6.centos7 gitblit