zoukankan      html  css  js  c++  java
  • 题目分享G 三代目

    题意:

    小豆现在有一个数 x ,初始值为 1 。 小豆有 Q 次操作,操作有两种类型:

    1 m x=x×m ,输出 xmodM

    2 pos x=x/ pos 次操作所乘的数(保证第 pos 次操作一定为类型 1,对于每一个类型 1 的操作至多会被除一次),输出 xmodM 

    分析:

    由于M不一定为质数,所以不能用逆元解决,

    所以用线段树求整个区间的乘积,

    操作1,2相当于单点修改

    代码:

    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    
    #define ll long long
    
    const int maxn=1e5+1;
    
    ll qans[maxn<<2];
    int mod;
    
    void make_tree(int x,int l,int r)
    {
        qans[x]=1ll;
        if(l==r) return;
        int mid=l+r>>1;
        make_tree(x<<1,l,mid);
        make_tree(x<<1|1,mid+1,r);
    }
    
    void dfs(int x,int l,int r,int p,int q)
    {
        if(l==r)
        {
            qans[x]=(ll)q%mod;
            return;
        }
        int mid=l+r>>1;
        if(p<=mid) dfs(x<<1,l,mid,p,q);
        else dfs(x<<1|1,mid+1,r,p,q);
        qans[x]=qans[x<<1]*qans[x<<1|1]%mod;
    }
    
    int main()
    {
        int t,q,p,x;
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d%d",&q,&mod);
            make_tree(1,1,q);
            for(int i=1;i<=q;i++)
            {
                scanf("%d%d",&p,&x);
                if(p==1) dfs(1,1,q,i,x);
                else dfs(1,1,q,x,1);
                printf("%lld
    ",qans[1]);
            }
        }
        return 0;
    }
  • 相关阅读:
    蓝桥杯_基础_杨辉三角
    蓝桥杯_基础_数组特征
    蓝桥杯_基础_美丽的图形
    脉象
    词根汇总
    蓝桥杯 入门训练 Fibonacci数列 解析
    制作tomcat重启.bat文件
    day23(023-递归练习)
    day27(027-反射&JDK新特性)
    day25(025-多线程(下)&GUI)
  • 原文地址:https://www.cnblogs.com/lin4xu/p/12969414.html
Copyright © 2011-2022 走看看