Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- #include <math.h>
- #include <vector>
- #include <set>
- using namespace std;
- typedef long long ll;
- struct tt{
- ll sum, num;
- };
- set <ll> prost1;
- tt ans;
- int a[1510][1510], n, m;
- int fnd(int ii, int jj){
- }
- int main()
- {
- ios::sync_with_stdio(0);
- ll mx;
- cin >> n >> m;
- for (int i = 0; i < n; i++)
- for (int j = 0; j < m; j++){
- cin >> a[i][j];
- }
- mx = 1000000;
- vector <char> prime (mx + 1, true);
- prime[0] = prime[1] = false;
- for (int i = 2; i <= mx; i++)
- if (prime[i]){
- prost1.insert(i);
- if (i * 1ll * i <= mx)
- for (int j = i * i; j <= mx; j += i)
- prime[j] = false;
- }
- ans.sum = 0;
- ans.num = 0;
- ll temp;
- int ii;
- for (int i = 0; i < n; i++)
- for (int j = 0; j < m; j++)
- if (a[i][j]!= 0){
- temp = 0;
- for (int ii = 0; i + ii < n && ii <= 6; ii++){
- temp = temp * 10 + a[i + ii][j];
- if (prost1.find(temp) != prost1.end()){
- ans.num++;
- ans.sum += temp;
- //cout << temp << endl;
- }
- }
- temp = a[i][j];
- for (int ii = 1; j + ii < m && ii<= 6; ii++){
- temp = temp * 10 + a[i][j + ii];
- if (prost1.find(temp) != prost1.end()){
- ans.num++;
- ans.sum += temp;
- //cout << temp << endl;
- }
- }
- temp = a[i][j];
- for (int ii = 1; (j + ii < m) && (ii + i < n) && ii <= 6; ii++){
- temp = temp * 10 + a[i + ii][j + ii];
- if (prost1.find(temp) != prost1.end()){
- ans.num++;
- ans.sum += temp;
- //cout << temp << endl;
- }
- }
- temp = 0;
- }
- cout << ans.num << " " << ans.sum << endl;
- return 0;
- }
- /*
- 2 2
- 1 3
- 3 2
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement