【SDOI 2010】 古代猪文

【题目链接】

https://www.lydsy.com/JudgeOnline/problem.php?id=1951

【算法】

欧拉定理+中国剩余定理 + lucas定理

【代码】

#include<bits/stdc++.h>
using namespace std;
#define MAXD 40000
typedef long long ll;
const ll P = 999911659;
const ll m[4] = {2,3,4679,35617};

ll i,j,n,q,cnt,ans,x;
ll a[10],factor[100010];
ll fac[MAXD+1][5];

inline void exgcd(ll a,ll b,ll &x,ll &y)
{
        if (b == 0)
        {
                x = 1;
                y = 0;
        }    else
        {
                exgcd(b,a%b,y,x);
                y -= a / b * x;
        }
}
inline ll CRT()
{
        int i;
        ll res = 0,M,T,x;
        for (i = 0; i < 4; i++)
        {
                M = (P - 1) / m[i];
                exgcd(M,m[i],T,x);
                T = (T % m[i] + m[i]) % m[i];
                res = (res + (a[i] * M % (P - 1) * T % (P - 1)) % (P - 1)) % (P - 1);
        }
        return res;
}
inline ll power(ll a,ll n,ll p)
{
        ll b = a,res = 1;
        while (n)
        {
                if (n & 1) res = res * b % p;
                b = b * b % p;
                n >>= 1;
        }
        return res;
}
inline void init()
{
        int i,j;
        for (i = 0; i < 4; i++) fac[0][i] = 1;
        for (i = 1; i <= MAXD; i++)
        {
                for (j = 0; j < 4; j++)
                {
                        fac[i][j] = fac[i-1][j] * i % m[j];
                }
        }
}
inline ll C(ll x,ll y,ll p)
{
        if (x < y) return 0;
        if (y == 0) return 1;
        return fac[x][p] * power(fac[y][p]*fac[x-y][p]%m[p],m[p]-2,m[p]) % m[p];
}
inline ll lucas(ll x,ll y,ll p)
{
        if (y == 0) return 1;
        else return lucas(x/m[p],y/m[p],p) * C(x%m[p],y%m[p],p) % m[p];
}
int main()
{

        scanf("%lld%lld",&n,&q);
        if (q == P)
        {
                printf("0\n");
                return 0;
        }
        cnt = 0;
        for (i = 1; i <= sqrt(n); i++)
        {
                if (n % i == 0)
                {
                        factor[++cnt] = i;
                        if (i * i != n) factor[++cnt] = n / i;
                }
        }
        init();
        for (i = 1; i <= cnt; i++)
        {
                for (j = 0; j < 4; j++)
                {
                        a[j] = lucas(n,factor[i],j);
                }
                x = (x + CRT()) % (P - 1);
        }
        ans = power(q,x,P);
        printf("%lld\n",ans);

        return 0;

}
 

原文地址:https://www.cnblogs.com/evenbao/p/9291940.html

时间: 2024-10-03 23:26:37

【SDOI 2010】 古代猪文的相关文章

【数学/扩展欧几里得/Lucas定理】BZOJ 1951 :[Sdoi 2010]古代猪文

Description “在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心……” ——选自猪王国民歌 很久很久以前,在山的那边海的那边的某片风水宝地曾经存在过一个猪王国.猪王国地理位置偏僻,实施的是适应当时社会的自给自足的庄园经济,很少与外界联系,商贸活动就更少了.因此也很少有其他动物知道这样一个王国. 猪王国虽然不大,但是土地肥沃,屋舍俨然.如果一定要拿什么与之相比的话,那就只能是东晋陶渊明笔下的大家想象中的桃花源了.猪

bzoj1951【SDOI2010】古代猪文

1951: [Sdoi2010]古代猪文 Time Limit: 1 Sec  Memory Limit: 64 MB Submit: 1525  Solved: 627 [Submit][Status][Discuss] Description "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--" --选自猪王国民歌 很久很久以前,在山的那边海的那边的某片风水宝地曾经存在过一个猪王国.猪王国地理位置偏僻,实

古代猪文 BZOJ 1951

古代猪文 [问题描述] "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--" --选自猪王国民歌 很久很久以前,在山的那边海的那边的某片风水宝地曾经存在过一个猪王国.猪王国地理位置偏僻,实施的是适应当时社会的自给自足的庄园经济,很少与外界联系,商贸活动就更少了.因此也很少有其他动物知道这样一个王国. 猪王国虽然不大,但是土地肥沃,屋舍俨然.如果一定要拿什么与之相比的话,那就只能是东晋陶渊明笔下的大家想象中的桃

1951: [Sdoi2010]古代猪文

1951: [Sdoi2010]古代猪文 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 2171  Solved: 904[Submit][Status][Discuss] Description “在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心……” ——选自猪王国民歌 很久很久以前,在山的那边海的那边的某片风水宝地曾经存在过一个猪王国.猪王国地理位置偏僻,实施的是适应当时

古代猪文

1951: [Sdoi2010]古代猪文Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 874  Solved: 328[Submit][Status] Description "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--" --选自猪王国民歌 很久很久以前,在山的那边海的那边的某片风水宝地曾经存在过一个猪王国.猪王国地理位置偏僻,实施的是适应当时社会的自给自

P2480 [SDOI2010]古代猪文

P2480 [SDOI2010]古代猪文 题目背景 “在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心……” ——选自猪王国民歌 很久很久以前,在山的那边海的那边的某片风水宝地曾经存在过一个猪王国.猪王国地理位置偏僻,实施的是适应当时社会的自给自足的庄园经济,很少与外界联系,商贸活动就更少了.因此也很少有其他动物知道这样一个王国. 猪王国虽然不大,但是土地肥沃,屋舍俨然.如果一定要拿什么与之相比的话,那就只能是东晋陶渊明笔

bzoj 1951 [Sdoi2010]古代猪文(数论知识)

Description “在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心……” ——选自猪王国民歌 很久很久以前,在山的那边海的那边的某片风水宝地曾经存在过一个猪王国.猪王国地理位置偏僻,实施的是适应当时社会的自给自足的庄园经济,很少与外界联系,商贸活动就更少了.因此也很少有其他动物知道这样一个王国. 猪王国虽然不大,但是土地肥沃,屋舍俨然.如果一定要拿什么与之相比的话,那就只能是东晋陶渊明笔下的大家想象中的桃花源了.猪

【BZOJ 1951】 [Sdoi2010]古代猪文

Description “在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心……” ——选自猪王国民歌 很久很久以前,在山的那边海的那边的某片风水宝地曾经存在过一个猪王国.猪王国地理位置偏僻,实施的是适应当时社会的自给自足的庄园经济,很少与外界联系,商贸活动就更少了.因此也很少有其他动物知道这样一个王国. 猪王国虽然不大,但是土地肥沃,屋舍俨然.如果一定要拿什么与之相比的话,那就只能是东晋陶渊明笔下的大家想象中的桃花源了.猪

[BZOJ 1951][Sdoi2010]古代猪文(Lucas+CRT+费马小定理)

Description “在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心……” ——选自猪王国民歌 很久很久以前,在山的那边海的那边的某片风水宝地曾经存在过一个猪王国.猪王国地理位置偏僻,实施的是适应当时社会的自给自足的庄园经济,很少与外界联系,商贸活动就更少了.因此也很少有其他动物知道这样一个王国. 猪王国虽然不大,但是土地肥沃,屋舍俨然.如果一定要拿什么与之相比的话,那就只能是东晋陶渊明笔下的大家想象中的桃花源了.猪

【BZOJ1951】【SDOI2010】古代猪文 Lucas定理、中国剩余定理、exgcd、费马小定理

Description “在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心……” ——选自猪王国民歌 很久很久以前,在山的那边海的那边的某片风水宝地曾经存在过一个猪王国.猪王国地理位置偏僻,实施的是适应当时社会的自给自足的庄园经济,很少与外界联系,商贸活动就更少了.因此也很少有其他动物知道这样一个王国. 猪王国虽然不大,但是土地肥沃,屋舍俨然.如果一定要拿什么与之相比的话,那就只能是东晋陶渊明笔下的大家想象中的桃花源了.猪