四川大学の新入生の季節E

ここに画像を挿入説明

この問題は、複合バージョンは思考の問題とオイラー画面は本当に強いです前に私がやったである
あなたは怖がらせるために、多数のテイクの対象となる点があり
1E9する必要が?
数がpを法の結果よりも大きい場合は0である、Pを考慮する後者の無いニーズの数!
それでも文字の配列を使用して合同定理を信じることを敢えてして私が始めましたか?以下のように続いてタイトルを考えるには、物事を行うことはできません
オイラーふるい子供が
特に強い
知識と剰余定理を使用するも途中で
回避オーバーフローに
コード上:

#include<bits/stdc++.h>
using namespace std;
const int maxn = 100000;
bool check[maxn + 10];
int phi[maxn + 10];
int prime[maxn + 10];
int tot;   

void f3()
{
    memset(check, false, sizeof(check));
    check[1]=true;
    phi[1] = 1;
    tot = 0;
    for (int i = 2; i <= maxn; i++)
    {
        if (!check[i])
        {
            prime[tot++] = i;
            phi[i] = i - 1;
        }
        for (int j = 0; j < tot; j++)
        {
            if (i * prime[j] > maxn)
            {
                break;
            }
            check[i * prime[j]] = true;
            if (i % prime[j] == 0)
            {
                phi[i * prime[j]] = phi[i] * prime[j];
                break;
            }
            else
            {
                phi[i * prime[j]] = phi[i] * (prime[j] - 1);
            }
        }
    }
    return ;
}

int main()
{
	f3();
	int t,n,p;
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d%d",&n,&p);
		int flag=min(n,p);
		long long ans=0,temp=1;
		for(int i=2;i<=flag;i++)
		{
			temp*=i;
			temp%=p;
			if(!check[i])
				ans=(ans+temp)%p;
		}
		printf("%d\n",ans);
	}
	return 0;
}

私はこのボードは、私が許さないだろうしながら、お互いに非常によく数回打た以上借りて非常に良いブロガーで取る
、私はあまりにも料理だった泣き言すごい
給油します

公開された54元の記事 ウォンの賞賛4 ビュー891

おすすめ

転載: blog.csdn.net/weixin_45460987/article/details/103394312