L1-072 刮刮彩票 (20 分)——wa样例2分析
题解
按照题意模拟就行
注意,当k>=4&&k<=6的时候,不能直接求a[1][k]+a[2][k]+a[3][k]
k必须减3
否则wa样例2
AC代码
#include<bits/stdc++.h>
using namespace std;
#define mem(a,b) memset(a,b,sizeof a)
#define PII pair<int,int>
#define ll long long
#define ull unsigned long long
#define IOS ios::sync_with_stdio(0),cin.tie(0)
#define gcd(a,b) __gcd(a,b)
#define ft first
#define sd second
#define endl '\n'
#define PI acos(-1.0)
#define lcm(a,b) a/gcd(a,b)*b
#define INF_INT 0x3f3f3f3f
#define INF_LONG 4557430888798830399
//inline void print(__int128 x)
//{
// if(x<0) {putchar('-'); x=-x;}
// if(x>9) print(x/10);
// putchar(x%10+'0');
//}
//inline int read()
//{
// int s=0,x=1;
// char ch=getchar();
// while(ch<'0'||ch>'9') {if(ch=='-') x=-1; ch=getchar();}
// while(ch>='0'&&ch<='9'){s=s*10+ch-'0';ch=getchar(); }
// return s*x;
//}
const int N = 1e5+9;
int q[N];
int a[N/100][N/100];
void init()
{
q[6]=10000,q[7]=36,q[8]=720,q[9]=360;
q[10]=80,q[11]=252,q[12]=108,q[13]=72;
q[14]=54,q[15]=180,q[16]=72,q[17]=180;
q[18]=119,q[19]=36,q[20]=306,q[21]=1080;
q[22]=144,q[23]=1800,q[24]=3600;
}
int main()
{
init();
int num=(1+9)*9/2,x0,y0;
for(int i=1; i<=3; i++)
for(int j=1; j<=3; j++)
{
cin>>a[i][j];
num-=a[i][j];
if(a[i][j]==0)
{
x0=i,y0=j;
}
}
a[x0][y0]=num;
int sum=0;
for(int i=0; i<3; i++)
{
int x,y;
cin>>x>>y;
cout<<a[x][y]<<endl;
//sum+=a[x][y];
}
int c;
cin>>c;
if(c>=1&&c<=3)
{
for(int i=1; i<=3; i++)
{
sum+=a[c][i];
}
}
if(c>=4&&c<=6)
{
for(int i=1; i<=3; i++)
{
sum+=a[i][c-3];
}
}
if(c==7) sum+=(a[1][1]+a[2][2]+a[3][3]);
if(c==8) sum+=(a[1][3]+a[2][2]+a[3][1]);
cout<<q[sum]<<endl;
return 0;
}