BZOJ卡流輸入輸出,把cin,cout改成scanf和printf 就過了。
#include <cstdio>
#include <iostream>
using namespace std;
const int N=1e6+5;
typedef long long ll;
int mui[N],pri[N],vis[N];
void get_mui()
{
mui[1]=1;
for(int i=2;i<=1e5;i++)
{
if(!vis[i])
{
pri[++pri[0]]=i;
mui[i]=-1;
}
for(int j=1;j<=pri[0]&&pri[j]*i<=1e6;j++)
{
vis[pri[j]*i]=1;
if(i%pri[j]==0) break;
else mui[i*pri[j]]=-mui[i];
}
}
}
int pre[N];
int main()
{
int n,a,b,d;
get_mui();
for(int i=1;i<=1e5;i++) pre[i]=pre[i-1]+mui[i];
scanf("%d",&n);
while(n--)
{
scanf("%d%d%d",&a,&b,&d);
a/=d;
b/=d;
int minn=min(a,b);
ll ans=0;
for(int l=1,r;l<=minn;l=r+1)
{
r=min(minn,min(a/(a/l),b/(b/l)));
ans+=1LL*(pre[r]-pre[l-1])*(a/l)*(b/l);
}
printf("%lld\n",ans);
}
}