Codevs 2898 卢斯的进位制

时间限制: 1 s

空间限制: 32000 KB

题目等级 : 青铜 Bronze

题解

题目描述 Description

著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法表,表中的字母代表数字。 例如下图:

其含义为:

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 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进制加法

输入描述 Input Description

程序输入:

n(n≤9)表示行数。

以下n行,每行包括n个字符串,每个字串间用空格隔开。(字串仅有一个为‘+’号,其它都由大写字母组成)

输出描述 Output Description

程序输出:

① 各个字母表示什么数,格式如:L=0,K=1,……

② 加法运算是几进制的。

③ 若不可能组成加法表,则应输出“ERROR!”

样例输入 Sample Input

4
+ M N P
M N MP M
N MP MN N
P M N P

样例输出 Sample Output

M=1 N=2 P=0
3

数据范围及提示 Data Size & Hint

范围极小,NOIP1998原题,数据都没改

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char tmp[256];
char u[10];
int v[10];
int main()
{
    int n;
    char cv;
    scanf("%d\n+",&n);
    n--;
    for(int i=0;i<n;i++) scanf(" %c",&cv),u[i]=cv;
    for(int i=0;i<n;i++)
    {
        scanf("\n%c",&cv);
        for(int j=0;j<n;j++)
        {
            scanf(" %s",tmp);
            if(strlen(tmp)==1)
            {
                for(int k=0;k<n;k++)
                {
                    if(u[k]==tmp[0])
                    {
                      v[k]++;
                      break;
                    }
                }
            }

        }
    }
    for(int i=0;i<n;i++)
      printf("%c=%d  ",u[i],v[i]-1);
    printf("\n%d",n);
    return 0;
}

思路:“+”号不管,最上面一行和最左边一行不管,从剩下的(N-1)*(N-1)的矩阵中暑每个 单个 字母的个数,个数减一就是每个字母的值(当时“ERROR”的情况没考虑居然都A了)

时间: 2024-11-08 23:20:27

Codevs 2898 卢斯的进位制的相关文章

卢斯加法表 Noip1998提高组-3

著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法表,表中的字母代表数字.例如:其含义为:L+L=L, L+K=K, L+V=V, L+E=EK+L=K, K+K=V, K+V=E, K+E=KL……E+E=KV根据这些规则可推导出: L=0, K=1, V=2, E=3 (图文无关,就这个意思)同时可以确定该表表示的是 4 进制加法 程序输入:n( n≤9)表示行数.以下 n 行,每行包括 n 个字符串,每个字串间用空格隔开.(字串仅有一个为‘+’号,其它都由大写字母组成) 程序

谈谈计算机和网络常用进位制:二进制(Binary)、十进制(Decimal)和十六进制(He

谈谈计算机和网络常用进位制:二进制(Binary).十进制(Decimal)和十六进制(Hexadecimal) 二进制.十进制和十六进制,这几个个进制里算十进制我们最熟悉了,从学前教育或者幼儿园最先接触的数学到再我们日常生活几乎天天和他打交道的下面这十个数字. 但是,话又说回来,你真的理解这10个数字吗?或者说你理解十进制吗? 今天我们就以十进制为切入点顺便谈谈二进制.十六进制以及它们之间的转换.在谈这些进制之前我们先了解一下进制的概念: 所谓进制就是进位制,是人们规定的一种进位方法.进位制/

各种进位制转换

在数字后面加上不同的字母来表示不同的进位制.B(Binary)表示二进制,O(Octal)表示八进制,D(Decimal)或不加表示十进制,H(Hexadecimal)表示十六进制. 例如:(101011)B=(53)O=(43)D=(2B)H 二进制 → 十进制 方法:二进制数从低位到高位(即从右往左)计算,第0位的权值是2的0次方,第1位的权值是2的1次方,第2位的权值是2的2次方,依次递增下去,把最后的结果相加的值就是十进制的值了. 例:将二进制的(101011)B转换为十进制的步骤如下:

ACM 求全排列(字典序、邻位对换、递增进位制数,递减进位制数)

字典序:(联合康托展开就也可以按照中介数求) 邻位对换.递增进位制数,递减进位制数:具体的实现和算法讲解如下: 代码..C++版的实现并不好..因为是挨个向后找的,如果K很大的时候会超时,不过...思路是这样...,第二版C++没有完成...因为不想写了,思路很简单,一次加减K就可以了 python代码直接给出,很完美 1 #include<cstdio> 2 #include<cstring> 3 #include<vector> 4 #include<algo

进位制 与成熟表示

1:移位运算符 #include<stdio.h> int main() { printf("%d ",18>>1); // 移位运算符 也就是 乘以2^? 后面的 是 进位 的 位数. printf("%d ",18<<1); // 除以2^? 后面的 是 退位 的 位数 }

计算机进位制原理

生活中的数字都以10进制为准 1)假定二进制.八进制.十六进制    ----->    十进制     (即  乘加 计算) 2)假定十进制    ----->   二进制.八进制.十六进制     (即  相除取余 ) https://wenku.baidu.com/view/34ba748be87101f69f319589.html 百度文库,详细解析

高精度进位制转换,Poj(1220)

转自ACdream. #include <stdio.h> #include <string.h> #include <stdlib.h> #define MAXSIZE 60000 char in[MAXSIZE]; int oldbase,newbase; int a[MAXSIZE],b[MAXSIZE],r[MAXSIZE]; int getNum(char c) { if(c >= '0' && c <= '9') return c

【进制转换】codevs 1474 十进制转m进制

1 #include<cstdio> 2 using namespace std; 3 int n,m,res,a[101],en; 4 int main() 5 { 6 scanf("%d%d",&n,&m); 7 while(n) 8 { 9 a[++en]=n%m; 10 n/=m; 11 } 12 for(int i=en;i>0;i--) 13 { 14 if(a[i]<10) printf("%d",a[i]);

法东部城市米卢斯一栋建筑失火 至少5人丧生is

前者的增长远远高于后者的增长,表明汽车之家的交易平台价值变现的增长速度远远高于媒体平台价值变现的增长速度.长期以来,国有与民有.国资与民资.国企与民企这三者之间,已被舆论"强行"界定为对立关系.据悉,国军网络司令部心理战小组由100人以上组成,负责防范朝鲜的对韩国心理战,而这次全部要员都可能成为调查对象.银联特别提醒任何网购退款均无需提供银行卡密码和CVN2.11月5日,在山东省临沂市苍山县公安局里,假冒"大校"和"上校"的6名嫌犯"劫