#23~#28 精度炸了?求助大佬!
查看原帖
#23~#28 精度炸了?求助大佬!
749325
Sincerin楼主2023/5/12 22:01

RT.

Runtime Error. Received signal 8: Floating-point exception.

小菜鸡改了半天了还是82pts。

Code

#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;
}

  
	          

Record

2023/5/12 22:01
加载中...