#63215. 蒜头君的困扰

蒜头君的困扰

暂无测试数据。

蒜头君在刷题的过程中遇到了困难,经过长时间的钻研,他写出了很多很多版本的解题程序,但是全部 Wrang answer 了。现在他怀疑是不是自己理解错了题意,但是现在他找不到原题了,只能找到自己最早的程序的关键函数以及题目的数据范围,函数返回值为结果,结果正确,但是时间超时了。

函数如下:

inline int solve (int l, int r, int p) {
    int ans = 1;
    for (int i = l; i <= r; i++) {
          for(int j = 2; p % j != 0 ||  i % j != 0; j++) {
            if(j > p){
                ans = i * (long long)ans % p;
                break;
            }
        }
    }
    return ans;
}

请你根据上述函数,编写一个优化程序,实现与上述函数相同的功能。

注意:上述函数使用 int 类型,但你的函数所能解决的数据应该按照本题的数据范围计算。

输入格式

输入共一行,以空格隔开的三个正整数 $l, r, p$,分别作为上述函数的参数。

输出格式

输出共一行,一个整数 $ans$,表示函数返回的正确结果。

数据范围

对于 $20\%$ 的数据,$1\leq l\leq r \leq 10^6$;

对于 $30\%$ 的数据,$1\leq \frac{r}{p} \leq 10^6$;

对于 $60\%$ 的数据,$1\leq l\leq r \leq 10^{18}$;

对于 $80\%$ 的数据,$1\leq l\leq r \leq 10^{1000}$;

对于 $100\%$ 的数据,$1\leq l\leq r \leq 10^{10^{6}}, 2 \leq p \leq 10^6$;

2 10 5
1
1 9260817 233333
73906