爸爸的雷达13

chl2023 2023-11-18 11:46:07

#include<bits/stdc++.h>
using namespace std;
int zhs[2005][2005],dp[2005][2005];
int t,k,n,m;
int main()
{
	cin>>t;cin>>k;
	for(int i=1;i<=2000;++i)
	{
		zhs[i][0]=1;
		zhs[i][i]=1;
	}
	zhs[1][1]=1;
	for(int i=2;i<=2000;++i)
		for(int j=1;j<i;++j)
		{
			zhs[i][j]=(zhs[i-1][j]+zhs[i-1][j-1])%k;
		}
	for(int i=1;i<=2000;++i)
	{
		for(int j=1;j<=i;++j)
		{
			dp[i][j]=dp[i-1][j]+dp[i][j-1]-dp[i-1][j-1];
			if(!zhs[i][j])
			++dp[i][j];
		}
		dp[i][i+1]=dp[i][i];
	}
	for(int i=1;i<=t;++i)
	{
		cin>>n;
		cin>>m;
		if(m>n)
		m=n;
		cout<<dp[n][m]<<endl;
	}
	return 0;
}

共 5 条回复

difei
difei
chl2023
#include <bits/stdc++.h>
#define endl "\n"
using namespace std;
long long n,c=0,m;
bool r[1000001],dd[1000001];
vector<int> a;
int main(){
	ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	//freeopen(".in","r",stdin);
	//freeopen(".out","w",stdout);
	cin>>n>>m;	
	if(n==1)n=2;
	for(int i=2;i*i<=1000000;i++){
		if(!r[i]){
			for(int j=i*i;j<=1000000;j+=i)r[j]=true;
		}
	}
	for(int i=2;i<=1000000;i++){
		if(!r[i]){
			a.push_back(i);
		}
	}
	for(int i=0;i<a.size();i++){
		long long p=a[i];
		for(long long j=ceil(max(n,p+1)*1.0/p)*p;j<=m;j+=p){
			if(j%p==0){
				dd[j-n]=1;
			}
		}
	}
	for(long long i=n;i<=m;i++){
//		cout<<i;
		if(dd[i-n]==0){c++;}
	}
	cout<<c;
	return 0;
}
chl2023