55分求助
查看原帖
55分求助
512407
codejiahui楼主2023/1/2 22:06
#include<iostream>
using namespace std;
const int mod = 1e9 + 7;
int prime[8000010],m = 0;
bool is_Prime(int x)
{
    for (int i = 1;i <= m;i++)
        if (x % prime[i] == 0)
            return false;
    return true;
}
void pre()
{
    for (int i = 2;i <= 100000;i++)
        if (is_Prime(i))
        {
            prime[++m] = i;
            //printf("%d ",i);
		}
}
int main()
{
    pre();
    int t;
    scanf("%d",&t);
    while(t--)
    {
        long long k;
        long long p,q;
        scanf("%lld%lld%lld",&k,&p,&q);
        long long ans = q - p + 1;
        int cnt = 0;
        for (int i = 1;i <= m && prime[i] <= k;i++)
            if (k % prime[i] == 0)
                cnt++;
        for (int i = 1;i <= cnt;i++)
            ans = (ans * 2) % mod;
        printf("%lld\n",ans);
    }
    return 0;
}

评测记录:

2023/1/2 22:06
加载中...