第5题:棋盘

kradcigam

2019-07-21 16:09:42

Personal

# 第5题:棋盘 这道题有一点毒瘤,很坑。 原来还有输是哪些,我呢就爆0了 我向龚胤翔投诉,结果龚胤翔破例,给了我第一个数据点,我测了一下,发现问题出在顺序上,结果龚胤翔就改了题目,也改了数据点。 然后,我AC了 这道题有一点跟炮那题类似 ```cpp #include <bits/stdc++.h> using namespace std; char a[55][55]; string work(string st){ string ans=""; for(int i=0;i<st.size();i++)ans=st[i]+ans; return ans; } int gcd(int x,int y){ if(x==0||y==0)return max(x,y); if(x%y==0)return y; return gcd(y,x%y); } int main(){ int n,ans=0; cin>>n; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) cin>>a[i][j]; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) for(int x=0;x<=n;x++) for(int y=0;y<=n;y++){ if(x==0&&y==0)continue; if(i-x<1&&gcd(x,y)==1||j-y<1&&gcd(x,y)==1){//一定是小于,不能是小于等于,陈书扬曾经在这里入坑 int tx=i,ty=j; string st=""; while(tx<=n&&ty<=n){ st+=a[tx][ty]; tx+=x; ty+=y; } if(work(st)==st&&st.size()>2)ans++; } } cout<<ans; return 0; } ``` 其实就是大模拟,个人觉得也没有什么技术含量,就写到这里吧。