Submission #16988360
Source Code Expand
#include<bits/stdc++.h>
using namespace std;
#define int long long
int mod;
void add(int &x,int y){
x=(x+y+mod)%mod;
}
int mul(int x,int y){
return x*y%mod;
}
int sadd(int x,int y){
return (x+y)%mod;
}
pair<int,int> a[505];
int f[505][505];
signed main(){
int n,l,r,cnt=0;
cin>>n>>mod;
l=2*n-1; r=2*n-1;
for(int i=0;i<=2*n-1;++i){
while(i*i + l*l >= n*n && l>=0) --l;
while(i*i + r*r > 4*n*n && r>=0) --r;
if(l==-1) a[++cnt]=make_pair(r+1,0);
else a[++cnt]=make_pair(l+1,r+1);
}
sort(a+1,a+cnt+1);
int ans=0;
for(int k=0;k<=n;++k){
memset(f,0,sizeof(f));f[0][0]=1;
for(int i=1,F=0,g=0;i<=cnt;F+=(a[i].second!=0),g+=(a[i].second==0),++i)
for(int j=0;j<=k;++j){
int now=f[i-1][j];
if(a[i].second==0) add(f[i][j],mul(now,a[i].first-g-j));
//g表示前面参与前缀计数的,j表示容斥时参与前缀计数的
else{
if(j!=k) add(f[i][j+1],mul(now,a[i].first-g-j));
add(f[i][j],mul(now,a[i].second-(F-j)-k-n));
}
}
if(k&1) add(ans,mod-f[cnt][k]);
else add(ans,f[cnt][k]);
}
cout<<ans;
return 0;
}
Submission Info
| Submission Time |
|
| Task |
F - Square Constraints |
| User |
zykmd |
| Language |
C++ (GCC 9.2.1) |
| Score |
1800 |
| Code Size |
1109 Byte |
| Status |
AC |
| Exec Time |
429 ms |
| Memory |
5576 KiB |
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
1800 / 1800 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
sample-01.txt, sample-02.txt, sample-03.txt |
| All |
01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 01-22.txt, 01-23.txt, 01-24.txt, sample-01.txt, sample-02.txt, sample-03.txt |
| Case Name |
Status |
Exec Time |
Memory |
| 01-01.txt |
AC |
9 ms |
5504 KiB |
| 01-02.txt |
AC |
5 ms |
5412 KiB |
| 01-03.txt |
AC |
4 ms |
5412 KiB |
| 01-04.txt |
AC |
5 ms |
5352 KiB |
| 01-05.txt |
AC |
289 ms |
5416 KiB |
| 01-06.txt |
AC |
154 ms |
5504 KiB |
| 01-07.txt |
AC |
35 ms |
5496 KiB |
| 01-08.txt |
AC |
231 ms |
5380 KiB |
| 01-09.txt |
AC |
14 ms |
5508 KiB |
| 01-10.txt |
AC |
387 ms |
5356 KiB |
| 01-11.txt |
AC |
398 ms |
5416 KiB |
| 01-12.txt |
AC |
398 ms |
5504 KiB |
| 01-13.txt |
AC |
404 ms |
5512 KiB |
| 01-14.txt |
AC |
408 ms |
5576 KiB |
| 01-15.txt |
AC |
11 ms |
5524 KiB |
| 01-16.txt |
AC |
231 ms |
5536 KiB |
| 01-17.txt |
AC |
12 ms |
5528 KiB |
| 01-18.txt |
AC |
21 ms |
5416 KiB |
| 01-19.txt |
AC |
8 ms |
5416 KiB |
| 01-20.txt |
AC |
415 ms |
5480 KiB |
| 01-21.txt |
AC |
421 ms |
5540 KiB |
| 01-22.txt |
AC |
422 ms |
5552 KiB |
| 01-23.txt |
AC |
427 ms |
5420 KiB |
| 01-24.txt |
AC |
429 ms |
5420 KiB |
| sample-01.txt |
AC |
5 ms |
5516 KiB |
| sample-02.txt |
AC |
5 ms |
5384 KiB |
| sample-03.txt |
AC |
239 ms |
5504 KiB |