刚才发错了(
rt,本蒟蒻实在看不出哪里有问题。
思路就是模拟,以四个为一周期,用a数组记录筛子的状态
#include<bits/stdc++.h>
using namespace std;
int r,c,a[5][5]={{0,5,0},{4,1,3,6},{0,2,0}},ans[100005][15],sum[100005],fx=0;
long long summ;
int main(){
cin>>r>>c;
if(!(r&&c)){
cout<<0;
return 0;
}
for(int i=0;i<r;++i){
if(fx==0){
for(int j=0;j<4;++j){
ans[i][j]=a[1][1];
//cout<<ans[i][j];
swap(a[1][3],a[1][0]); swap(a[1][3],a[1][1]); swap(a[1][3],a[1][2]);
}
fx=1;
}else{
for(int j=3;j>=0;--j){
ans[i][j]=a[1][1];
//cout<<ans[i][j];
swap(a[1][1],a[1][0]); swap(a[1][1],a[1][3]); swap(a[1][1],a[1][2]);
}
fx=0;
}
//cout<<endl;
if(!i%2){
for(int j=3;j>=c%4;j--){swap(a[1][3],a[1][0]); swap(a[1][3],a[1][1]); swap(a[1][3],a[1][2]);}
}else{
for(int j=0;j<c%4;j++){swap(a[1][1],a[1][0]); swap(a[1][1],a[1][3]); swap(a[1][1],a[1][2]);}
}
sum[i]=c/4*(a[1][0]+a[1][1]+a[1][2]+a[1][3]);
if(!i%2){
for(int j=0;j<c%4;++j){
sum[i]+=ans[i][j];
}
}
else{
for(int j=3;j>=4-c%4;--j){
sum[i]+=ans[i][j];
}
}
//cout<<a[1][0]<<a[1][1]<<a[1][2]<<a[1][3]<<endl;
swap(a[1][1],a[0][1]); swap(a[1][3],a[2][1]);
}
for(int i=0;i<r;++i){
summ+=sum[i];
}
cout<<summ;
return 0;
}
```cpp