hello 大家好鸭~ 今天是我入坑的第一天 给大家带个福利(记得关注我呀,我会连续更新内容的哦~~~)
今天我就给大家带来一道题目吧~这道题在落谷的题库中可以找到哦
题目描述:
著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法表,表中的字母代表数字。 例如:
L+L=LL+L=L,L+K=KL+K=K,L+V=VL+V=V,L+E=EL+E=E
K+L=KK+L=K,K+K=VK+K=V,K+V=EK+V=E,K+E=KLK+E=KL
…… E+E=KVE+E=KV
根据这些规则可推导出:L=0L=0,K=1K=1,V=2V=2,E=3E=3
同时可以确定该表表示的是4进制加法
//感谢lxylxy123456同学为本题新加一组数据
输入格式
nn (n≤9)(n≤9)表示行数。
以下nn行,每行包括nn个字符串,每个字串间用空格隔开。(字串仅有一个为‘+’号,其它都由大写字母组成)
输出格式
① 各个字母表示什么数,格式如:L=0L=0,K=1K=1,……按给出的字母顺序。
② 加法运算是几进制的。
③ 若不可能组成加法表,则应输出“ERROR!”
输入输出样例
输入
5
代码(c++):
#include
#define fu(i,q,w) for(register int i=q;i<=w;i++)
#define fd(i,q,w) for(register int i=q;i>=w;i--)
using namespace std;
typedef long long ll;
inline int read(){
int ret=0,f=1;char c;
while((c=getchar())<'0'||c>'9')if(c=='-')f=-1;
while(c>='0'&&c<='9')ret=ret*10+(c-'0'),c=getchar();
return ret*f;
}
char word[10];
char check[10];
string numx,numy;
map<char,int> two;
map<char,int> tone;
int n;
void in(){
n=read();
cin>>numx;
fu(i,1,n-1){cin>>numx,word[i]=numx[0];}
fu(i,1,n-1)
fu(j,1,n){cin>>numx;
if(j!=1&&j!=2)
if(numx==numy){printf("ERROR!");exit(0);}
numy=numx;
if(numx.size()==2){
two[word[i]]++;tone[numx[1]]++;
}
}
}
void solve(){
fu(i,1,n-1)
if(two[word[i]]!=n-2-tone[word[i]]){printf("ERROR!");exit(0);}
fu(i,1,n-1)
cout<<word[i]<<'='<<two[word[i]]<<' ';
printf("\n");
printf("%d",n-1);
}
int main(){
in();
solve();
return 0;
}
好啦 今天的代码就到这里了 对了 这道题是落谷题库中的P1013哦~
看都看到这了,给个关注再走呗~