lg P1013 [NOIP1998 提高组] 进制位
证明 n-1进制
1.只缺一个 显然
2.缺>=2
1.缺1 -》 an+ai >an 且有n种可能 则一定两位数 1ai 所以一定有 1
2.缺其他 无1 -》显然不符
所以完整 -》 得证
ERROER
check
//再写if时 判断条件写全 //设置变量时,搞明白具体含义,在纸上写出来 /* 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 L=0 K=1 V=2 E=3 4 */ #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<bits/stdc++.h> #define ll long long #define ddd printf("-----------------debug\n"); using namespace std; int n,ans[15],mp[15]; char ch[15][15][3]; int check(int x,int y) { int sum=ans[x]+ans[y]; int cur=ch[x][y][1]-'A'+1; if(sum>=n-1&&mp[cur]!=1) return 0; if(sum>=n-1&&mp[cur]==1) { cur=ch[x][y][2]-'A'+1; sum-=n-1; if(mp[cur]!=sum) return 0; } if(sum!=mp[cur]) return 0; return 1; } int main() { ios::sync_with_stdio(false); cin>>n; for(int i=1;i<=n;i++) cin>>ch[1][i]+1; for(int i=2;i<=n;i++) { int cnt=0; for(int j=1;j<=n;j++) { cin>>ch[i][j]+1; cnt+=strlen(ch[i][j]+1)>=2; } ans[i]=cnt; mp[ch[i][1][1]-'A'+1]=cnt; } for(int i=2;i<=n;i++) { for(int j=2;j<=n;j++) { if(check(i,j)==0) { cout<<"ERROR!"<<endl; return 0; } } } for(int i=2;i<=n;i++) cout<<ch[1][i][1]<<"="<<mp[ch[1][i][1]-'A'+1]<<" "; cout<<endl<<n-1<<endl; return 0; }

浙公网安备 33010602011771号