• [NOIP1998] 提高组 洛谷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进制加法

    //感谢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。

    要判断能否组成加法表(即每一个字母都有对应的数字)

     1 /*by SilverN*/
     2 #include<algorithm>
     3 #include<iostream>
     4 #include<cstring>
     5 #include<cstdio>
     6 #include<cmath>
     7 using namespace std;
     8 char mp[30];
     9 int cnt[30];
    10 char ch;
    11 char s[30];
    12 int n;
    13 int main(){
    14     scanf("%d
    ",&n);
    15     int i,j;
    16     getchar();
    17     n--;
    18     for(i=0;i<n;i++){
    19         getchar();
    20         scanf("%c",&ch);
    21         mp[i]=ch;
    22     }
    23     for(i=0;i<n;i++){
    24         getchar();
    25         scanf("%c",&ch);
    26         for(j=0;j<n;j++){
    27             getchar();
    28             scanf("%s",s);
    29             if(strlen(s)>1)continue;
    30             for(int k=0;k<n;k++){
    31                 if(mp[k]==s[0]){
    32                     cnt[k]++;
    33                 }
    34             }
    35         }
    36     }
    37     for(i=0;i<n;i++)
    38         if(!cnt[i]){
    39             printf("ERROR!
    ");
    40             return 0;
    41         }
    42     for(i=0;i<n;i++){
    43         printf("%c=%d ",mp[i],cnt[i]-1);
    44     }
    45     printf("
    %d
    ",n);
    46     return 0;
    47 }
  • 相关阅读:
    求24点
    关于参数和返回值的常量性
    点到平面的距离公式
    大端序与小端序
    Quake3中的绝对值函数
    整数超出范围时如何表示?
    关于数组的几道面试题
    在移位数组中查找数
    时间复杂度O(n),空间复杂度O(1)的排序
    C++之对象切割
  • 原文地址:https://www.cnblogs.com/SilverNebula/p/5949881.html
Copyright © 2020-2023  润新知