传送门

\(\color{green}{solution}\)

分析下,在\(1e5+1\)内,一个数的约数个数最多为\(2^{6}\)个,所以我们可以考虑枚举约数
复杂度\(O(N^{2^{6 \times 2}})\),实际上远远不到

#include <bits/stdc++.h>
using namespace std;
const int maxn = 100010;

vector <int> g[maxn];

int _pow(int x, int n, int P) {
    int ret = 1;
    for ( ; n; n >>= 1, x = 1LL * x * x % P)
        if( n & 1) ret = 1LL * ret * x % P;
    return ret;
}

int val[maxn], ins[maxn];

inline void qry(int val, int opt) {
    for ( register int i = 0; i < g[val].size(); ++ i) {
        ins[g[val][i]] += opt;
    }
}

int solve(int x, int K, int P) {
    memset(ins, 0, sizeof(ins));
    int ret = _pow(x, K, P);
    for ( register int i = 0; i < g[x].size(); ++ i) {
        if( val[g[x][i]]-ins[g[x][i]]) {
            int opt = val[g[x][i]]-ins[g[x][i]];
            (ret += 1LL * opt * _pow(g[x][i], K, P) % P) %= P;
            qry(g[x][i], opt); //
        }
    }
    for ( register int i = 0; i < g[x].size(); ++ i) {
        val[g[x][i]] ++;
    }
    return ret;
}

int n, x, K, P;
int main() {
    scanf("%d", &n);
    for ( register int i = 1e5; i; -- i) {
        for ( register int k = i; k <= 1e5; k += i) g[k].push_back(i);
    }
    for ( register int i = 1; i <= n; ++ i) {
        scanf("%d%d%d", &x, &K, &P);
        printf("%d\n", solve(x, K, P));
    }
    return 0;
}

牛客 Wannafly挑战赛27 D 绿魔法师的更多相关文章

  1. Wannafly挑战赛27 D绿魔法师

    链接Wannafly挑战赛27 D绿魔法师 一个空的可重集合\(S\),\(n\)次操作,每次操作给出\(x,k,p\),要求支持下列操作: 1.在\(S\)中加入\(x\). 2.求\[\sum_{ ...

  2. Wannafly挑战赛27 C蓝魔法师

    链接Wannafly挑战赛27 C蓝魔法师 给出一棵树,求有多少种删边方案,使得删后的图每个连通块大小小于等于\(k\),\(n,k\leq 2*10^3\) 假设我们正在考虑\(i\)这个子树,那么 ...

  3. 牛客wannafly 挑战赛14 B 前缀查询(trie树上dfs序+线段树)

    牛客wannafly 挑战赛14 B 前缀查询(trie树上dfs序+线段树) 链接:https://ac.nowcoder.com/acm/problem/15706 现在需要您来帮忙维护这个名册, ...

  4. 牛客~~wannafly挑战赛19~A 队列

    链接:https://www.nowcoder.com/acm/contest/131/A来源:牛客网 题目描述 ZZT 创造了一个队列 Q.这个队列包含了 N 个元素,队列中的第 i 个元素用 Qi ...

  5. 牛客Wannafly挑战赛23 B.游戏

    游戏 题目描述 小N和小O在玩游戏.他们面前放了n堆石子,第i堆石子一开始有ci颗石头.他们轮流从某堆石子中取石子,不能不取.最后无法操作的人就输了这个游戏.但他们觉得这样玩太无聊了,更新了一下规则. ...

  6. [牛客Wannafly挑战赛27D]绿魔法师

    description newcoder 给你一个空的可重集合\(S\). \(n\)次操作,每次操作给出\(x\),\(k\),\(p\),执行以下操作: \(opt\ 1\):在S中加入x. \( ...

  7. 牛客 Wannafly 挑战赛26D 禁书目录 排列组合 概率期望

    原文链接https://www.cnblogs.com/zhouzhendong/p/9781060.html 题目传送门 - NowCoder Wannafly 26D 题意 放一放这一题原先的题面 ...

  8. 牛客Wannafly挑战赛26E 蚂蚁开会(树链剖分+线段树)

    传送门 题面描述 一颗n个节点的树,m次操作,有点权(该节点蚂蚁个数)和边权(相邻节点的距离). 三种操作: 操作1:1 i x将节点i的点权修改为x.(1 <= i <= n; 1 &l ...

  9. 牛客Wannafly挑战赛11E 白兔的刁难

    传送门 如果大力推单位根反演就可以获得一个 \(k^2logn\) 的好方法 \[ans_{t}=\frac{1}{k}\sum_{i=0}^{k-1}(w_k^{-t})^i(w_k^i+1)^n\ ...

随机推荐

  1. RAW编程接口

    LWIP移植好之后,就要使用它提供的API接口来编写程序.

  2. C primer 编程练习 (不断更新)

    目前在看<C Primer>,以后会经常在这篇博客里更新课后的编程练习题 第二章:编程练习 2.1 #include <stdio.h> int main(void) { pr ...

  3. springboot启动正常,访问restController报404

    原因:spring boot只会扫描启动类当前包和以下的包 比如以下: 主类:Application放在包com.springboot.main controller类放在包com.springboo ...

  4. 前端福利之改变placeholder颜色的方法(转)

    之前拿到一个设计图,Placeholder是白色的,所以就查看了一下改变placeholder的方法: input::-webkit-input-placeholder { /* WebKit bro ...

  5. CodeForces 427B Prison Transfer (滑动窗口)

    题意:给定 n, t, c 和 n 个数,问你在这 n 个数中有多少连续的 c 个数,并且这个 c 个数不大于 t. 析:很简单么,是滑动窗口,从第一个开始遍历,如果找到 c 个数,那么让区间前端点加 ...

  6. CodeForces 690D1 The Wall (easy) (判断连通块的数量)

    题意:给定一个图,问你有几个连通块. 析:不用说了,最简单的DFS. 代码如下: #include <bits/stdc++.h> using namespace std; const i ...

  7. JS各种情况处理

    1.获取URL及其参数 实例:URL:file:///C:/Program%20Files/nodejs/test/jumbTarget.html?a=1&&b=2&& ...

  8. Leaflet入门:添加点线面并导入GeoJSON数据|Tutorial of Leaflet: Adding Points, Lines, Polygons and Import GeoJSON File

    Web GIS系列: 1.搭建简易Web GIS网站:使用GeoServer+PostgreSQL+PostGIS+OpenLayers3 2.使用GeoServer+QGIS发布WMTS服务 3.使 ...

  9. [Selenium With C#基础教程] Lesson-04 按钮

    作者:Surpassme 来源:http://www.jianshu.com/p/83d7416c4b7d 声明:本文为原创文章,如需转载请在文章页面明显位置给出原文链接,谢谢. Button通常有两 ...

  10. 探索式软件测试—Exploratory Software Testing

    最近找到去年上半年看过一本关于测试方面书籍的总结笔记,一直放在我的个人U盘里,当时是用Xmind记录的,现在重新整理下分享给大家了! James A.Whittaker [美] 詹姆斯·惠特克(软件测 ...