zoukankan      html  css  js  c++  java
  • 洛谷P1013 进制位

    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的串,记录每个字符出现的次数-1就是它所代表的值 
        最后还要把找到的值代到矩阵中验证一下 
    */
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<map>
    using namespace std;
    map<char,int>q;//查询每个字母出现的次数 
    char ch[30][30][30],mp[10];
    int n;
    int a[30][30];
    int main(){
        //freopen("Cola.txt","r",stdin);
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
                scanf("%s",ch[i][j]+1);
        for(int i=2;i<=n;i++)mp[i]=ch[1][i][1];
        for(int i=2;i<=n;i++){
            for(int j=2;j<=n;j++){
                if(strlen(ch[i][j]+1)>1)continue;
                q[ch[i][j][1]]++;
            }
        }
        for(int i=2;i<=n;i++)
            if(!q[mp[i]]){
                printf("ERROR!");
                return 0;
            }
        bool flag=0;
        for(int i=2;i<=n;i++){
            for(int j=2;j<=n;j++){
                int num=0,len=strlen(ch[i][j]+1),k=1;
                while(1){
                    if(len==0)break;
                    num+=k*(q[ch[i][j][len]]-1);
                    k=k*(n-1);
                    len--;
                }
                if(num!=q[ch[1][j][1]]+q[ch[i][1][1]]-2){
                    printf("ERROR!");return 0;
                }
            }
        }
        for(int i=2;i<=n;i++)
            printf("%c=%d ",mp[i],q[mp[i]]-1);
        printf("
    %d",n-1);
    } 
  • 相关阅读:
    调度器27—Freq Qos 和 限频流程 Hello
    调度器23—EAS Hello
    调度器24—CFS任务选核 Hello
    调度器22—CPU频点设置函数分析 Hello
    attribute section 属性 Hello
    使用二级指针辅助遍历的单链表 Hello
    数据结构——TODO Hello
    plist移植学习笔记 Hello
    Linux驱动中继承与多态思想_C Hello
    内核线程 Hello
  • 原文地址:https://www.cnblogs.com/thmyl/p/7562896.html
Copyright © 2011-2022 走看看