RT.
Runtime Error. Received signal 8: Floating-point exception.
小菜鸡改了半天了还是82pts。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<bitset>
#define int long long
#define ri register int
#define rd(n) n=read()
using namespace std;
const int N=10000005;
const int mod=1e9+7;
inline int read(){register int ans=0,f=0;register char ch=getchar();while(ch<'0'||ch>'9') f^=(ch=='-'),ch=getchar();while(ch>='0'&&ch<='9') ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();return f?-ans:ans;}
inline void print(int n){if(n<0){putchar('-');n=-n;}if(n>9) print(n/10);putchar(n%10+'0');}
bitset<1000000005>not_prime;
int prime[N];
inline void euler(int n)
{
for(register int i=2;i<=n;++i)
{
if(!not_prime[i]) prime[++prime[0]]=i;
for(register int j=1;j<=prime[0]&&i*prime[j]<=n;++j)
{
not_prime[i*prime[j]]=1;
if(i%prime[j]==0) break;
}
}
}
int T;
signed main(void)
{
euler(N);
rd(T);
while(T--)
{
register int k,P,Q,ans=1;
rd(k);
rd(P);
rd(Q);
for(ri i=1;prime[i]*prime[i]<=k;++i)
{
if(k%prime[i]==0)
{
ans=(ans<<1)%mod;
while(k%prime[i]==0) k/=prime[i];
}
}
if(k>1) ans=(ans<<1)%mod;
print(ans*(Q-P+1)%mod);
putchar('\n');
}
return 0;
}