제출 #476055

#제출 시각아이디문제언어결과실행 시간메모리
476055stefantagaSquirrel (RMI18_squirrel)C++14
100 / 100
2774 ms884 KiB
#include <bits/stdc++.h> using namespace std; long long bitmask[50005]; int mmare[50005]; int dl[8] = {-1, -1, 0, 1, 1, 1, 0, -1}; int dc[8] = {0, 1, 1, 1, 0, -1, -1, -1}; bool prime(int x,int y) { if (x==1||y==1) { return true; } if (x==0||y==0) { return false; } if (bitmask[x] & bitmask[y]) { return false; } if (mmare[x]>1&&mmare[x]==mmare[y]) { return false; } return true; } long long sum=0; void fractal(int x,int y,int lung,int dir,int jum) { if (lung==0) { return; } int i; for (i=1; i<=lung; i++) { x=x+dl[dir]; y=y+dc[dir]; sum=sum+prime(x,y); } if (jum) { lung=lung/2; } fractal(x,y,lung,(dir+1)&7,!jum); fractal(x,y,lung,(dir-1)&7,!jum); } bool c[50005]; int n,m,frac,i,j,nr,x,y,numar; int main() { cin>>n>>m>>frac; nr=-1; int lim=max(n,m); for (i=2; i<=lim; i++) { if (mmare[i]==0) { for (j=i; j<=lim; j+=i) { mmare[j]=i; } } } for (i=2; i*i<=lim; i++) { if (bitmask[i]==0) { nr++; for (j=i; j<=lim; j+=i) { bitmask[j]+=(1LL<<nr); } } } for (int i=1; i<=frac; i++) { cin>>x>>y>>numar; x--; y--; sum=sum+prime(x,y); fractal(x,y,numar,0,1); } cout<<sum<<'\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...