版权声明:转载者乖乖♂站好 https://blog.csdn.net/Eric1561759334/article/details/82924233
题目
https://www.luogu.org/problemnew/show/P1013
思路
先在前半部分记录一下并将字母转化为数字,在这个部分枚举一下并判断。
进制就是n-1
代码
#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
const int N=15;
int n,pipei[N];
char key,str[N];
char pd[N][N][N];
string mi;
int main()
{
memset(pipei,0,sizeof(pipei));
scanf("%d",&n);
cin>>key;
for(int i=0;i<n-1;i++)
{
char c;
cin>>c;
str[i]=c;
}
for(int i=0;i<n-1;i++)
{
char c;
cin>>c;
for(int j=0;j<n-1;j++)
{
cin>>pd[i][j];
if(strlen(pd[i][j])==1)
{
for(int k=0;k<n-1;k++)
if(str[k]==pd[i][j][0])
{
pipei[k]++;
break;
}
}
}
}
int jia[N],anss=0;
for(int i=0;i<n-1;i++)
{
for(int j=0;j<n-1;j++)
{
if(pd[i][j]!=NULL)
{
anss=0;
for(int l=0;l<=strlen(pd[i][j]);l++)
{
for(int k=0;k<n-1;k++)
{
if(pd[i][j][l]==str[k])
{
jia[l]=pipei[k]-1;
anss=anss*10+jia[l];
}
}
}
int ans=pipei[i]+pipei[j]-2;
ans=ans/(n-1)*10+ans%(n-1);
if(ans!=anss)
{
printf("ERROR!");
return 0;
}
}
}
}
for(int i=0;i<n-1;i++)printf("%c=%d ",str[i],pipei[i]-1);
printf("\n%d",n-1);
return 0;
}