mxqz,本地已A,上交40pts

P1013 [NOIP1998 提高组] 进制位

蛤?建议去 luogu IDE 试一下
by E1_de5truct0r @ 2022-01-29 21:07:58


@[chaotic](/user/218250) luogu IDE 上样例过不了,建议检查初始值等问题
by E1_de5truct0r @ 2022-01-29 21:09:09


谢谢,我改了一下,A了125,但34仍Wa 这次测试点3在IDE都过了 但评测就是WA 测试点3: 6 + M L K N H M L H M MK N L H N L MM MK K M L K N H N MK MM N MH ML H N MK H ML MM M=1 L=2 K=0 N=4 H=3 5 ``` #include<bits/stdc++.h> using namespace std; int n,a,b,c,st,en; string tmp,s[10],p[10][10]; map<char,int> m; bool flag[10]; int calc(int x,string q) { // cout<<q<<endl; int ret=0; for(int i=0;i<q.length();i++) { ret=ret*x+m[q[i]]; // printf(" #%c# ",q[i]); } return ret; } int check(int x,int w) { if(w==n-1) { // for(int i=2;i<=n;i++) printf("%c %d ",p[1][i][0],m[p[1][i][0]]); // printf("\n"); for(int i=2;i<=n;i++) { for(int j=2;j<=n;j++) { a=m[p[i][1][0]]; b=m[p[1][j][0]]; c=calc(x,p[i][j]); // cout<<a<<" "<<b<<" "<<c<<endl; // printf(" %c %c \n",p[i][1][0],p[1][j][0]); if(a+b!=c) return 0; } } for(int i=2;i<=n;i++) { cout<<p[1][i]; printf("=%d ",m[p[1][i][0]]); } printf("\n%d",x); return 1; } for(int i=0;i<x;i++) { if(!flag[i]) { flag[i]=1; m[p[1][w+2][0]]=i; if(check(x,w+1)) return 1; flag[i]=0; m.erase(p[1][w+2][0]); } } return 0; } int main() { scanf("%d ",&n); for(int i=1;i<=n;i++) { getline(cin,s[i]); if(i!=n) s[i].erase(s[i].length()-1); s[i]+=" "; } for(int i=1;i<=n;i++) { p[i][1]=s[i].substr(0,s[i].find(" ")); for(int j=2;j<=n;j++) { st=s[i].find(" ")+1; s[i][s[i].find(" ")]='#'; en=s[i].find(" "); p[i][j]=s[i].substr(st,en-st); } } // for(int i=1;i<=n;i++) // { // for(int j=1;j<=n;j++) cout<<p[i][j]; // cout<<endl; // } int i=n-1; while(1) { if(i>10) break; if(check(i,0)) return 0; i++; } printf("ERROR!\n"); return 0; } ``` 求调!
by chaotic @ 2022-01-29 22:00:11


我心态炸了 getline读入会读\n 每个测试点又不全有\n 终于处理好了 ``` for(int i=1;i<=n;i++) { getline(cin,s[i]); while(s[i][s[i].length()-1]!=' '&&!(s[i][s[i].length()-1]>='A'&&s[i][s[i].length()-1]<='Z')) s[i].erase(s[i].length()-1); s[i]+=" "; } ``` 此帖完结
by chaotic @ 2022-01-29 22:11:58


|