全int也T是怎么回事
查看原帖
全int也T是怎么回事
1070491
Kmeow楼主2024/8/27 12:59

rt 测评记录

#include<bits/stdc++.h>
#define MAXN 50005
#define ll long long
using namespace std;

inline int read(){
    int x=0;
    int f=1;
    char c=getchar();
    while(c<'0' || c>'9'){
    	if(c=='-') f=-1;
        c=getchar();
    }
    while(c>='0' && c<='9'){
        x=(x<<1)+(x<<3)+(c^48);
        c=getchar();
    }
    return x*f;
}

int T;
int k;
int mu[MAXN],sum[MAXN];
int pm[MAXN],cnt;
bool ntp[MAXN];
int ans;

void get_mu(){
	int n=50000;
	mu[1]=1;
	for(int i=2;i<=n;i++){
		if(!ntp[i]){
			pm[++cnt]=i;
			mu[i]=-1;
		}
		for(int j=1;j<=cnt&&pm[j]*i<=n;j++){
			int t=pm[j]*i;
			ntp[t]=1;
			if(i%pm[j]==0){
				mu[t]=0;
				break;
			}
			mu[t]-=mu[i];
		}
	}
	for(int i=1;i<=n;i++){
		sum[i]=(sum[i-1]+mu[i]);
	}
}

int calc(int n,int m){
	int res=0;
	int i,j;
	for(i=1;i<=min(n,m);i++){
		j=min(n/(n/i),m/(m/i));
		res=(res+(sum[j]-sum[i-1])*(n/(i*k))*(m/(i*k)));
	}
	return res;
}

int main(){
	T=read();
	get_mu();
	int a,b,c,d;
	while(T--){
		a=read();b=read();c=read();d=read();
		k=read();
		int ans=calc(b,d)-calc(a-1,d)-calc(b,c-1)+calc(a-1,c-1);
		printf("%lld\n",ans);
	}
	return 0;
}
2024/8/27 12:59
加载中...