Time Limit: 1000ms
Memory Limit: 65536KB
2 1 10 2 3 10 5
5 6 ACcode:#include <map> #include <queue> #include <cmath> #include <cstdio> #include <cstring> #include <stdlib.h> #include <iostream> #include <algorithm> #define maxn 100 using namespace std; typedef long long ll; ll slove(ll r,ll n){ vector<ll>p; for(ll i=2;i*i<=n;++i) if(n%i==0){ p.push_back(i); while(n%i==0) n/=i; } if(n>1)p.push_back(n); ll sum=0; for(ll msk=1;msk<(1<<p.size());++msk){ ll mult=1,bits=0; for(ll i=0;i<(ll)p.size();++i) if(msk&(1<<i)){ ++bits; mult*=p[i]; } ll cur=r/mult; if(bits%2==1)sum+=cur; else sum-=cur; } return r-sum; } int main(){ int t; ll n,m,k; scanf("%d",&t); while(t--){ scanf("%lld%lld%lld",&n,&m,&k); printf("%lld\n",slove(m,k)-slove(n-1,k)); } return 0; }