ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

洛谷 P1013进制位题解--zhengjun

2022-06-10 18:31:07  阅读:167  来源: 互联网

标签:map 洛谷 进制 -- 题解 KL KK 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+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

思路

我还不清楚,这么一道模拟题怎么就变成了:
洛谷P1013
首先,肯定有进位,不然可以不停的加出新的数出来而无法表示。

既然有进位,进制至多是n-1进制的

否则\(1+n-2=n-1\),无法进位,但是肯定没有\(n-1\)这个数,\(0\backsim n -1\)就有\(n\)个了,至多有 \(n-1\)个数
那么:
\(x=(x-1)+1=(x-2)+2=......=1+(x-1)\)
所以,一个数 \(x\) 就会在表格中出现\((x-1)\)次

\((x<n-1\)即没有进位\()\)

只要用\(map\)做就够了。(说是\(map\),其实只是一个数组充当\(map\)而已)

判断是否合法时,两重枚举两个数,用进制转换法将结果转换为十进制,在判断是否等于前两个数的和。

上代码

#include<bits/stdc++.h>
using namespace std;
char str[10][10][5];
int n,f[300];//f为map
int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            scanf("%s",str[i][j]);
    for(int i=2;i<=n;i++)
        for(int j=2;j<=n;j++)
            if(strlen(str[i][j])==1)
                f[str[i][j][0]]++;
    for(int i=2;i<=n;i++){
        for(int j=2;j<=n;j++){
            int x=f[str[i][1][0]]-1,y=f[str[1][j][0]]-1;
            int sum=0,t;
            for(int k=0;k<strlen(str[i][j]);k++){
                t=f[str[i][j][k]]-1;
                sum=sum*(n-1)+t;//进制转换
            }
            if(x+y!=sum){//不合法
                printf("ERROR!");
                return 0;
            }
        }
    }
    for(int i=2;i<=n;i++){
        printf("%c=%d ",str[1][i][0],f[str[1][i][0]]-1);//空格忘记加了搞了好久(我直接在网站里打代码,不编译)
    }
    printf("\n%d",n-1);
    return 0;
}

谢谢--zhengjun

标签:map,洛谷,进制,--,题解,KL,KK,KV,加法
来源: https://www.cnblogs.com/A-zjzj/p/16364295.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有