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
AC × 3
AC × 27
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