@[靛涟](/space/show?uid=83903)
~~做我npy我就告诉你~~
为什么你的程序会算出来4+9=9这种奇怪的东西(mod 12意义下)
by Smile_Cindy @ 2019-04-16 19:56:51
@[Alpha](/space/show?uid=87058) ~~窝也不知道啊QAQ~~
估计又毒瘤了0.0
by 靛涟 @ 2019-04-16 20:16:19
@[靛涟](/space/show?uid=83903)
帮你恁到90分了
by Smile_Cindy @ 2019-04-16 20:19:04
90pts Code:
```cpp
#include<bits/stdc++.h>
using namespace std;
int n;
int m[200];
string a,b,c;
int vis[220];
void dfs_2(int dep,int add);
void dfs_1(int dep,int add){
/* cout<<"dfs_1("<<dep<<","<<add<<")"<<endl;
for(int i='A';i<='A'+n-1;i++){
printf("%-3d ",m[i]);
}*/
if(dep>n-1){
for(int i='A';i<='A'+n-1;i++){
printf("%d ",m[i]);
}
cout<<endl;/**/
exit(0);
}
if(m[a[dep]]>-1){
dfs_2(dep,add);
return;
}
// cout<<endl;
for(int i=0;i<=n-1;i++){
if(!vis[i]){
vis[i]=1;
m[a[dep]]=i;
dfs_2(dep,add);
m[a[dep]]=-1;
vis[i]=0;
}
}
}
void dfs_2(int dep,int add){
/* cout<<"dfs_2("<<dep<<","<<add<<")"<<endl;
for(int i='A';i<='A'+n-1;i++){
printf("%-3d ",m[i]);
}
cout<<endl;*/
int &p1=m[a[dep]],&p2=m[b[dep]],ans=m[c[dep]];
if(p2>-1){
if((p1+p2+add)%n==m[c[dep]]){
dfs_1(dep+1,(p1+p2+add)/n);
}
else if(m[c[dep]]==-1 && !vis[(p1+p2+add)%n] ){
ans=m[c[dep]]=(p1+p2+add);
vis[(p1+p2+add)%n]=1;
m[c[dep]]%=n;
dfs_1(dep+1,(p1+p2+add)/n);
vis[(p1+p2+add)%n]=0;
ans=m[c[dep]]=-1;
}
return;
}
for(int i=0;i<=n-1;i++){
if(!vis[i]){
vis[i]=1;
p2=i;
if((p1+p2+add)%n==m[c[dep]]){
dfs_1(dep+1,(p1+p2+add)/n);
}
else if(m[c[dep]]==-1 && !vis[(p1+p2+add)%n]){
ans=m[c[dep]]=(p1+p2+add)%n;
vis[(p1+p2+add)%n]=1;
// m[c[dep]]%=n;
dfs_1(dep+1,(p1+p2+add)/n);
ans=m[c[dep]]=-1;
vis[(p1+p2+add)%n]=0;
}
vis[i]=0;
p2=-1;
}
}
}
int main(){
cin>>n;
cin>>a>>b>>c;
reverse(a.begin(),a.end());
reverse(b.begin(),b.end());
reverse(c.begin(),c.end());
for(int i='A';i<='Z';i++) m[i]=-1;
dfs_1(0,0);
return 0;
}
```
by Smile_Cindy @ 2019-04-16 20:19:25
@[靛涟](/space/show?uid=83903)
100分了~~做我npy~~
```cpp
#include<bits/stdc++.h>
using namespace std;
int n;
int m[200];
string a,b,c;
int vis[220];
void dfs_2(int dep,int add);
bool cut()
{
for(int i=0;i<n;i++)
{
if(m[a[i]]==-1 || m[b[i]]==-1 || m[c[i]]==-1)continue;
if((m[a[i]]+m[b[i]])%n!=m[c[i]] && (m[a[i]]+m[b[i]]+1)%n!=m[c[i]])return true;
}
return false;
}
void dfs_1(int dep,int add){
if(cut())return;
/* cout<<"dfs_1("<<dep<<","<<add<<")"<<endl;
for(int i='A';i<='A'+n-1;i++){
printf("%-3d ",m[i]);
}*/
if(dep>n-1){
for(int i='A';i<='A'+n-1;i++){
printf("%d ",m[i]);
}
cout<<endl;/**/
exit(0);
}
if(m[a[dep]]>-1){
dfs_2(dep,add);
return;
}
// cout<<endl;
for(int i=0;i<=n-1;i++){
if(!vis[i]){
vis[i]=1;
m[a[dep]]=i;
dfs_2(dep,add);
m[a[dep]]=-1;
vis[i]=0;
}
}
}
void dfs_2(int dep,int add){
/* cout<<"dfs_2("<<dep<<","<<add<<")"<<endl;
for(int i='A';i<='A'+n-1;i++){
printf("%-3d ",m[i]);
}
cout<<endl;*/
int &p1=m[a[dep]],&p2=m[b[dep]],ans=m[c[dep]];
if(p2>-1){
if((p1+p2+add)%n==m[c[dep]]){
dfs_1(dep+1,(p1+p2+add)/n);
}
else if(m[c[dep]]==-1 && !vis[(p1+p2+add)%n] ){
ans=m[c[dep]]=(p1+p2+add);
vis[(p1+p2+add)%n]=1;
m[c[dep]]%=n;
dfs_1(dep+1,(p1+p2+add)/n);
vis[(p1+p2+add)%n]=0;
ans=m[c[dep]]=-1;
}
return;
}
for(int i=0;i<=n-1;i++){
if(!vis[i]){
vis[i]=1;
p2=i;
if((p1+p2+add)%n==m[c[dep]]){
dfs_1(dep+1,(p1+p2+add)/n);
}
else if(m[c[dep]]==-1 && !vis[(p1+p2+add)%n]){
ans=m[c[dep]]=(p1+p2+add)%n;
vis[(p1+p2+add)%n]=1;
dfs_1(dep+1,(p1+p2+add)/n);
ans=m[c[dep]]=-1;
vis[(p1+p2+add)%n]=0;
}
vis[i]=0;
p2=-1;
}
}
}
int main(){
cin>>n;
cin>>a>>b>>c;
reverse(a.begin(),a.end());
reverse(b.begin(),b.end());
reverse(c.begin(),c.end());
for(int i='A';i<='Z';i++) m[i]=-1;
dfs_1(0,0);
return 0;
}
```
by Smile_Cindy @ 2019-04-16 20:34:10
@[靛涟](/space/show?uid=83903)
人呢?
by Smile_Cindy @ 2019-04-16 20:36:20
@[Alpha](/space/show?uid=87058) 好...好厉害QAQ【发出肥宅羡慕的声音】
by 靛涟 @ 2019-04-16 20:54:07
@[靛涟](/space/show?uid=83903)
请问,您为什么要强调您是妹子呢
by Smile_Cindy @ 2019-04-16 21:09:28
@[Alpha](/space/show?uid=87058) luogu不都是可爱的妹子吗qwq
by 靛涟 @ 2019-04-16 21:51:39
@[骆钿皓](/space/show?uid=40403) 因为人类的本质是复读机
by S_C_Yesterday @ 2019-07-20 08:08:04