Submission #44675506
Source Code Expand
#include <bits/stdc++.h>
using namespace std;
#define x first
#define y second
#define fro(i, x, y) for(int i = (x);i <= (y);i++)
#define pre(i, x, y) for(int i = (x);i >= (y);i--)
typedef long long ll;
typedef __int128 lll;
typedef unsigned int uint;
typedef pair<int, int> PII;
typedef unsigned long long ull;
const int N = 1010;
const int mod = 1e9 + 7;
ll n, m, k;
char ch[N][N];
struct Mat
{
ll a[2][2];
inline Mat()
{
a[0][0] = a[1][1] = 1;
a[0][1] = a[1][0] = 0;
}
inline Mat operator*(const Mat b)
{
Mat c;
c.a[0][0] = (a[0][0] * b.a[0][0] + a[0][1] * b.a[1][0]) % mod;
c.a[0][1] = (a[0][0] * b.a[0][1] + a[0][1] * b.a[1][1]) % mod;
c.a[1][0] = (a[1][0] * b.a[0][0] + a[1][1] * b.a[1][0]) % mod;
c.a[1][1] = (a[1][0] * b.a[0][1] + a[1][1] * b.a[1][1]) % mod;
return c;
}
};
inline Mat power(Mat x, ll y)
{
Mat res;
while(y)
{
if(y & 1) res = res * x;
x = x * x, y /= 2;
}
return res;
}
inline ll power(ll x, ll y)
{
ll res = 1;
while(y)
{
if(y & 1) res = res * x % mod;
x = x * x % mod, y /= 2;
}
return res;
}
signed main()
{
ios::sync_with_stdio(0), cin.tie(0);
cin >> n >> m >> k;
if(!k) cout << 1 << endl, exit(0);
fro(i, 1, n) cin >> (ch[i] + 1);
int l1, l2, s1, s2, d;
l1 = l2 = s1 = s2 = d = 0;
fro(i, 1, n) fro(j, 1, m) d += (ch[i][j] == '#');
fro(i, 1, n) fro(j, 1, m - 1)
l1 += (ch[i][j] == '#' && ch[i][j] == ch[i][j + 1]);
fro(i, 1, n - 1) fro(j, 1, m)
l2 += (ch[i][j] == '#' && ch[i][j] == ch[i + 1][j]);
fro(i, 1, n) s1 += (ch[i][1] == '#' && ch[i][1] == ch[i][m]);
fro(i, 1, m) s2 += (ch[1][i] == '#' && ch[1][i] == ch[n][i]);
if(s1 && s2) cout << "1\n";
else if(!s1 && !s2) cout << power(d, k - 1) << "\n";
else
{
Mat a; ll s = 0;
a.a[0][0] = d;
if(s1) a.a[1][1] = s1, a.a[0][1] = l1;
if(s2) a.a[1][1] = s2, a.a[0][1] = l2;
a = power(a, k - 1);
cout << (a.a[0][0] - a.a[0][1] + mod) % mod;
}
return 0;
}
Submission Info
| Submission Time |
|
| Task |
F - Fraction of Fractal |
| User |
win114514 |
| Language |
C++ (GCC 9.2.1) |
| Score |
1700 |
| Code Size |
2219 Byte |
| Status |
AC |
| Exec Time |
13 ms |
| Memory |
4692 KiB |
Compile Error
./Main.cpp: In function ‘int main()’:
./Main.cpp:81:19: warning: unused variable ‘s’ [-Wunused-variable]
81 | Mat a; ll s = 0;
| ^
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
1700 / 1700 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
s1.txt, s2.txt, s3.txt |
| All |
01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, 26.txt, 27.txt, 28.txt, 29.txt, 30.txt, 31.txt, 32.txt, 33.txt, 34.txt, 35.txt, 36.txt, 37.txt, 38.txt, 39.txt, 40.txt, 41.txt, 42.txt, 43.txt, 44.txt, s1.txt, s2.txt, s3.txt |
| Case Name |
Status |
Exec Time |
Memory |
| 01.txt |
AC |
11 ms |
4464 KiB |
| 02.txt |
AC |
8 ms |
4632 KiB |
| 03.txt |
AC |
8 ms |
4540 KiB |
| 04.txt |
AC |
8 ms |
4536 KiB |
| 05.txt |
AC |
11 ms |
4588 KiB |
| 06.txt |
AC |
9 ms |
4632 KiB |
| 07.txt |
AC |
13 ms |
4540 KiB |
| 08.txt |
AC |
8 ms |
4588 KiB |
| 09.txt |
AC |
8 ms |
4612 KiB |
| 10.txt |
AC |
9 ms |
4508 KiB |
| 11.txt |
AC |
7 ms |
4604 KiB |
| 12.txt |
AC |
8 ms |
4488 KiB |
| 13.txt |
AC |
8 ms |
4540 KiB |
| 14.txt |
AC |
9 ms |
4596 KiB |
| 15.txt |
AC |
8 ms |
4560 KiB |
| 16.txt |
AC |
7 ms |
4516 KiB |
| 17.txt |
AC |
12 ms |
4692 KiB |
| 18.txt |
AC |
11 ms |
4512 KiB |
| 19.txt |
AC |
10 ms |
4536 KiB |
| 20.txt |
AC |
11 ms |
4584 KiB |
| 21.txt |
AC |
9 ms |
4520 KiB |
| 22.txt |
AC |
8 ms |
4588 KiB |
| 23.txt |
AC |
7 ms |
4608 KiB |
| 24.txt |
AC |
7 ms |
4600 KiB |
| 25.txt |
AC |
8 ms |
4588 KiB |
| 26.txt |
AC |
8 ms |
4648 KiB |
| 27.txt |
AC |
8 ms |
4512 KiB |
| 28.txt |
AC |
10 ms |
4652 KiB |
| 29.txt |
AC |
2 ms |
3600 KiB |
| 30.txt |
AC |
2 ms |
3516 KiB |
| 31.txt |
AC |
2 ms |
3496 KiB |
| 32.txt |
AC |
2 ms |
3528 KiB |
| 33.txt |
AC |
2 ms |
3616 KiB |
| 34.txt |
AC |
2 ms |
3600 KiB |
| 35.txt |
AC |
2 ms |
3528 KiB |
| 36.txt |
AC |
2 ms |
3560 KiB |
| 37.txt |
AC |
2 ms |
3524 KiB |
| 38.txt |
AC |
2 ms |
3644 KiB |
| 39.txt |
AC |
2 ms |
3476 KiB |
| 40.txt |
AC |
7 ms |
3532 KiB |
| 41.txt |
AC |
2 ms |
3556 KiB |
| 42.txt |
AC |
2 ms |
3556 KiB |
| 43.txt |
AC |
2 ms |
3552 KiB |
| 44.txt |
AC |
2 ms |
3596 KiB |
| s1.txt |
AC |
2 ms |
3520 KiB |
| s2.txt |
AC |
1 ms |
3600 KiB |
| s3.txt |
AC |
3 ms |
3508 KiB |