x,y都要改,不然在3的倍数的时候会出错
```cpp
#include <bits/stdc++.h>
using namespace std;
bool m[10][10];
int main(){
string s;
cin >> s;
if (s.size() < 9){
if (s.size()%2)
cout << "xiaoa wins.\n";
else
cout << "uim wins.\n";
return 0;
}//没有下满就最后下的人获胜
for (int i = 0; i < s.size(); i++){
int x = (s[i]-'0'-1)/3+1;
int y = (s[i]-'0'-1)%3+1;
m[x][y] = bool(i%2);
}
for (int i = 1; i <= 3; i++){
if (m[i][1] == m[i][2] && m[i][2] == m[i][3])
{
if (m[i][1]) cout << "uim wins.\n";
else cout << "xiaoa wins.\n";
return 0;
}
if (m[1][i] == m[2][i] && m[2][i] == m[3][i])
{
if (m[1][i]) cout << "uim wins.\n";
else cout << "xiaoa wins.\n";
return 0;
}
}
if (m[1][1] == m[2][2] && m[2][2] == m[3][3])
{
if (m[1][1]) cout << "uim wins.\n";
else cout << "xiaoa wins.\n";
return 0;
}
if (m[1][3] == m[2][2] && m[2][2] == m[3][1])
{
if (m[1][3]) cout << "uim wins.\n";
else cout << "xiaoa wins.\n";
return 0;
}
cout << "drew.\n";
return 0;
}
```
by youyew2007 @ 2022-12-27 10:55:43
@[youyew2007](/user/349545)
谢
by Zjc20120331 @ 2022-12-28 11:30:17
# [博客地址](https://www.ricemoon.cn/)
```cpp
#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define endl "\n"
const int N = 1e5 + 10;
void solve()
{
string s;
cin >> s;
int a[N], b[N];
vector<vector<int>> v = {{1, 2, 3}, {1, 5, 9}, {1, 4, 7}, {2, 5, 8}, {3, 6, 9}, {4, 5, 6}, {7, 8, 9}, {3, 5, 7}};
for (int i = 0; i < s.size(); i ++ )
{
if (i & 1)
{
b[s[i] - '0'] = 2;
}
else
{
a[s[i] - '0'] = 1;
}
}
for (int i = 0; i < v.size(); i ++ )
{
if (a[v[i][0]] == 1 and a[v[i][1]] == 1 and a[v[i][2]] == 1)
{
cout << "xiaoa wins." << endl;
return;
}
if (b[v[i][0]] == 2 and b[v[i][1]] == 2 and b[v[i][2]] == 2)
{
cout << "uim wins." << endl;
return;
}
}
cout << "drew." << endl;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
solve();
return 0;
}
```
by Roger_Spencer @ 2023-02-19 09:49:02