Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cmath>
- #include <iostream>
- #include <vector>
- #include <algorithm>
- #include <string>
- #include <set>
- #include <map>
- #include <list>
- #include <time.h>
- #include <math.h>
- #include <random>
- #include <deque>
- #include <queue>
- #include <cassert>
- #include <unordered_map>
- #include <unordered_set>
- #include <iomanip>
- #include <bitset>
- #include <sstream>
- #include <chrono>
- #include <cstring>
- #include <string>
- #include <fstream>
- #include <list>
- #include <numeric>
- using namespace std;
- #define int long long
- const int mod = 1e9 + 7;
- signed main()
- {
- int n, k;
- cin >> n >> k;
- vector<vector<int>> a(n, vector<int>(n));
- for (int i = 0; i < n; ++i) {
- for (int j = 0; j < n; ++j) {
- cin >> a[i][j];
- }
- }
- vector<int> p(100);
- p[0] = 1;
- for (int i = 1; i < 10; ++i) {
- p[i] = p[i - 1] * 17;
- p[i] %= mod;
- }
- map<int, int> m;
- for (int i = 0; i < n - k + 1; ++i) {
- for (int j = 0; j < n - k + 1; ++j) {
- int ans = 0;
- int pos = 0;
- for (int u = 0; u < k; ++u) {
- for (int v = 0; v < k; ++v) {
- ans += a[i + u][j + v] * p[pos];
- ans %= mod;
- pos++;
- }
- }
- m[ans]++;
- }
- }
- int res = 0;
- for (pair<int, int> t : m) {
- res += (t.second * (t.second - 1) / 2);
- }
- cout << res << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement