传送门

\(\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. Openssl rsautl命令

    一.简介 rsautl指令能够使用RSA算法签名,验证身份,加密/解密数据 二.语法 openssl rsautl [-in file] [-out file] [-inkey file] [-pas ...

  2. 修改字段类型modify

    alter table 表名 modify column 字段名 类型;

  3. cJSON结构体构建

    cJSON结构体构建 一:cJSON的构建. int create_objects() { cJSON *root, *fmt, *img, *thm, *fld; char *out; int i; ...

  4. real-Time Correlative Scan Matching

    启发式算法(heuristic algorithm)是相对于最优化算法提出的.一个问题的最优算法求得该问题每个实例的最优解.启发式算法可以这样定义:一个基于直观或经验构造的算法,在可接受的花费(指计算 ...

  5. modifiers标量调节器插件的定义和使用

    在插件目录plugins里新建文件 modifier.插件名.php文件(如 modifier.插件名.php)例:function smarty_modifier_test($utime, $for ...

  6. [GO]并发实现聊天室服务器

    package main import ( "net" "fmt" "strings" "time") type Cli ...

  7. C# GDI+绘图介绍

    最近查阅网上资料,将GDI+的基本知识汇总如下: 一.基本的知识 GDI+:Graphics Device Interface Plus也就是图形设备接口,提供了各种丰富的图形图像处理功能; 在C#. ...

  8. HDU 2084 数塔 (水DP)

    题意:.... 析:从下往上算即可,水DP. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #incl ...

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

    作者:Surpassme 来源:http://www.jianshu.com/p/08ee1929875f 声明:本文为原创文章,如需转载请在文章页面明显位置给出原文链接,谢谢. 单选按钮通常用在需要 ...

  10. Find out your Java heap memory size

    In this article, we will show you how to use the -XX:+PrintFlagsFinal to find out your heap size det ...