全部评论 11

  • 氛围能好一点吗!!!

    2025-05-17 来自 浙江

    1
  • 啊哈

    2025-07-18 来自 浙江

    0
  • ???

    2025-07-17 来自 浙江

    0
  • <人才工作室>聊天群
    userId_undefined
    邱澤銳·龍龘龖🔥

    出道萌新时间刺客时空双修者空间掌握者贪心·贪心尝试者字符串·魔法使
    2025-05-15 21:03:01

    发布于:浙江

    26
    阅读
    10
    回复
    2
    点赞
    开始聊天吧!<人才工作室>里的人

    2个人觉得很赞

    userId_undefined
    去预览
    此处输入正文,2千字以内,可点击右上角【去预览】按钮查看markdown展示效果
    0/2000发布
    全部评论 8
    userId_undefined
    给爷留下

    删除
    龇牙笑

    刚刚 来自 广东

    0
    userId_undefined
    给爷留下

    删除
    v

    刚刚 来自 广东

    0
    userId_undefined
    守夜人

    时间刺客枚举·枚举小能手模拟·模拟练习生倔强青铜
    #include<bits/stdc++.h>
    #define re return
    #define ll long long
    #define N 2000011
    using namespace std;
    ll n,k,p;
    struct Jack{
    ll f[4][4];
    Jack(){memset(f,0,sizeof(f));}
    inline Jack operator (const Jack &b)const{
    Jack ans;
    int i,j,k;
    for(k=1;k<=3;++k)
    for(i=1;i<=3;++i)
    for(j=1;j<=3;++j)
    ans.f[i][j]=((ans.f[i][j]+f[i][k]b.f[k][j]%p)%p+p)%p;
    re ans;
    }
    inline void one( ){
    int i,j;
    for(i=1;i<=3;++i)f[i][i]=1;
    }
    inline void pre_one( ){
    f[1][1]=f[1][2]=f[2][1]=f[3][3]=1;
    }
    inline void pre_two( ){
    pre_one( );
    f[3][1]=-1;
    }
    inline void pre_three( ){
    f[3][1]=f[3][3]=1;
    }
    };
    inline Jack qui(Jack a,ll b){
    Jack ans;
    ans.one( );
    while(!!b){
    if(b&1)ans=ansa;
    a=aa,b>>=1;
    }
    re ans;
    }
    inline void exgcd(ll a,ll b,ll &x,ll &y,ll &d){
    if(!b){d=a,x=1,y=0;return;}
    exgcd(b,a%b,y,x,d);
    y-=a/bx;
    }
    inline ll getinv(ll a,ll p){
    ll x,y,d;
    exgcd(a,p,x,y,d);
    if(d!=1)re -1;
    re (x%p+p)%p;
    }
    ll f[N],len[N],tot,q[N],vis[N];
    int main( ){
    scanf("%lld%lld%lld",&n,&k,&p);
    int i;
    f[1]=f[2]=1;
    if(n<=2){puts("1");re 0;}
    for(i=3;i<=2e6;++i){
    f[i]=(f[i-1]+f[i-2])%k;
    if(f[i]==1&&!len[1])len[1]=i;
    ll inv(getinv(f[i],k));
    if(inv!=-1&&!len[inv])len[inv]=i;
    }
    ll now(1),t(0),l;
    int flag(0);
    while(1){
    l=len[now];
    q[++tot]=now,vis[now]=tot;
    if(!l){
    for(i=1;i<tot;++i)t+=len[q[i]];
    flag=1;
    break;
    }
    now=(nowf[l-1])%k;
    if(!!vis[now]){
    for(i=1;i<vis[now];++i)t+=len[q[i]];
    break;
    }
    }
    Jack a,tr1,tr2;
    tr1.pre_one( ),tr2.pre_two( ),a.pre_three( );
    if(n<=t){
    --len[1],--n;
    for(i=1;i<vis[now];++i)
    if(n>=len[q[i]]){
    a=aqui(tr1,len[q[i]]-1)tr2;
    n-=len[q[i]];
    }else{
    printf("%lld\n",(aqui(tr1,n)).f[3][1]);
    re 0;
    }
    }else{
    --len[1];
    n-=t;
    for(i=1;i<vis[now];++i)a=aqui(tr1,len[q[i]]

    2025-07-17 来自 广东

    0
  • 2025-07-17 来自 广东

    0
  • v

    2025-07-17 来自 广东

    0
  • #include<bits/stdc++.h>
    #define re return
    #define ll long long
    #define N 2000011
    using namespace std;
    ll n,k,p;
    struct Jack{
    ll f[4][4];
    Jack(){memset(f,0,sizeof(f));}
    inline Jack operator (const Jack &b)const{
    Jack ans;
    int i,j,k;
    for(k=1;k<=3;++k)
    for(i=1;i<=3;++i)
    for(j=1;j<=3;++j)
    ans.f[i][j]=((ans.f[i][j]+f[i][k]b.f[k][j]%p)%p+p)%p;
    re ans;
    }
    inline void one( ){
    int i,j;
    for(i=1;i<=3;++i)f[i][i]=1;
    }
    inline void pre_one( ){
    f[1][1]=f[1][2]=f[2][1]=f[3][3]=1;
    }
    inline void pre_two( ){
    pre_one( );
    f[3][1]=-1;
    }
    inline void pre_three( ){
    f[3][1]=f[3][3]=1;
    }
    };
    inline Jack qui(Jack a,ll b){
    Jack ans;
    ans.one( );
    while(!!b){
    if(b&1)ans=ans
    a;
    a=a
    a,b>>=1;
    }
    re ans;
    }
    inline void exgcd(ll a,ll b,ll &x,ll &y,ll &d){
    if(!b){d=a,x=1,y=0;return;}
    exgcd(b,a%b,y,x,d);
    y-=a/bx;
    }
    inline ll getinv(ll a,ll p){
    ll x,y,d;
    exgcd(a,p,x,y,d);
    if(d!=1)re -1;
    re (x%p+p)%p;
    }
    ll f[N],len[N],tot,q[N],vis[N];
    int main( ){
    scanf("%lld%lld%lld",&n,&k,&p);
    int i;
    f[1]=f[2]=1;
    if(n<=2){puts("1");re 0;}
    for(i=3;i<=2e6;++i){
    f[i]=(f[i-1]+f[i-2])%k;
    if(f[i]==1&&!len[1])len[1]=i;
    ll inv(getinv(f[i],k));
    if(inv!=-1&&!len[inv])len[inv]=i;
    }
    ll now(1),t(0),l;
    int flag(0);
    while(1){
    l=len[now];
    q[++tot]=now,vis[now]=tot;
    if(!l){
    for(i=1;i<tot;++i)t+=len[q[i]];
    flag=1;
    break;
    }
    now=(now
    f[l-1])%k;
    if(!!vis[now]){
    for(i=1;i<vis[now];++i)t+=len[q[i]];
    break;
    }
    }
    Jack a,tr1,tr2;
    tr1.pre_one( ),tr2.pre_two( ),a.pre_three( );
    if(n<=t){
    --len[1],--n;
    for(i=1;i<vis[now];++i)
    if(n>=len[q[i]]){
    a=aqui(tr1,len[q[i]]-1)tr2;
    n-=len[q[i]];
    }else{
    printf("%lld\n",(a
    qui(tr1,n)).f[3][1]);
    re 0;
    }
    }else{
    --len[1];
    n-=t;
    for(i=1;i<vis[now];++i)a=a
    qui(tr1,len[q[i]]-1)tr2;
    if(!!flag){
    printf("%lld\n",(a
    qui(tr1,n)).f[3][1]);
    re 0;
    }else{
    ll size(0);
    Jack tr;
    tr.one( );
    for(i=vis[now];i<=tot;++i){
    tr=tr*qui(tr1,len[q[i]]-1)*tr2;
    size+=len[q[i]];
    }

    2025-07-13 来自 浙江

    0
  • 还祝你们那些毕业的毕业快乐🎓🎓🎓

    2025-06-24 来自 浙江

    0
  • 你干了什么?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????*10000

    2025-06-08 来自 浙江

    0
  • 冷清了一点

    2025-05-18 来自 浙江

    0
  • Hi

    2025-05-15 来自 浙江

    0

热门讨论