#include<bits/stdc++.h>
using namespace std;
const int maxx=1000005;
long long res = 0, t = 0;
int n, m;
int a[1600][1600];
bool p[maxx];
void sang()
{
int j;
for(int i = 1; i <= maxx; i++) p[i] = true;
p[0] = false;
p[1] = false;
for(int i = 2; i <= int(sqrt(maxx)); i++)
{
if (p[i]==true)
{
j=i*i;
while(j<=maxx)
{
p[j]=false;
j=j+i;
}
}
}
}
void check(int x, int y)
{
if (a[x][y]==0) return;
int k = a[x][y];
if (p[k]) res+=k, t++;
for(int i = 1; i<=5; i++)
{
if (i + y > m) break;
k = k*10+a[x][y+i];
if (p[k]) res +=k, t++;
}
k = a[x][y];
for(int i = 1; i<=5; i++)
{
if ((i + x > n)||(i+y > m)) break;
k = k*10+a[x+i][y+i];
if (p[k]) res +=k, t++;
}
k = a[x][y];
for(int i = 1; i<=5; i++)
{
if (i + x > n) break;
k = k*10+a[x+i][y];
if (p[k]) res +=k, t++;
}
}
void giai()
{
sang();
for(int i = 1; i<=n; i++)
for(int j = 1; j<=m; j++) check(i,j);
printf("%lld %lld",t,res);
}
int main()
{
freopen("PRIME.inp","r",stdin);
freopen("PRIME.out","w",stdout);
scanf("%d %d", &n, &m);
for(int i = 1; i<=n; i++)
{
for(int j = 1; j<=m; j++) scanf("%d",&a[i][j]);
}
giai();
return 0;
}
* Chuyên dạy lập trình ONLINE cho học sinh THCS, THPT *.
Mọi giao lưu, trao đổi, xin liên hệ: Lê Quang Vinh - zalo: 037.803.8755.
Page: Lớp học Code Sky
Group FB1: Ôn thi HSG9 - THTB - TS10 chuyên tin
Group FB2: Học Scratch - Ôn thi Tin học trẻ bảng A
Thứ Ba, 3 tháng 5, 2022
PRIME C++
Đăng ký:
Đăng Nhận xét (Atom)
Không có nhận xét nào:
Đăng nhận xét
Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.