[数论]Codeforces 757E. Bash Plays with Functions

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

Description

f0(n)fr+1==uv=n[(u,v)=1]1fr
fr(n)

Solution

因为n的所有质因子之间对f0(n)贡献是独立的,所以f0是个积性函数。
那么就有所有fr都是积性函数。
将每个质因子单独考虑,狄利克雷卷积的形式就可以化成简单的求和(可能就是普通的卷积???)

fr+1(pa)=i=0afr(pi)
发现f0(pa)=[a0]+1
直接DP就好啦。
#include <bits/stdc++.h>
using namespace std;

const int N = 1010101;
const int MOD = 1000000007;
typedef long long ll;

inline char get(void) {
    static char buf[100000], *S = buf, *T = buf;
    if (S == T) {
        T = (S = buf) + fread(buf, 1, 100000, stdin);
        if (S == T) return EOF;
    }
    return *S++;
}
template<typename T>
inline void read(T &x) {
    static char c; x = 0;
    for (c = get(); c < '0' || c > '9'; c = get());
    for (; c >= '0' && c <= '9'; c = get()) x = x * 10 + c - '0';
}

int n, r, q, x, sum, Pcnt, ans, lim;
vector<int> fact[N];
int f[N][30];
int prime[N], vis[N];

inline void Add(int &x, int a) {
    x += a; while (x >= MOD) x -= MOD;
}

int main(void) {
    freopen("1.in", "r", stdin);
    read(q); f[0][0] = 1; lim = 1000000;
    for (int i = 1; i <= 20; i++) f[0][i] = 2;
    for (int i = 1; i <= lim; i++) {
        sum = 0;
        for (int j = 0; j <= 20; j++) {
            Add(sum, f[i - 1][j]);
            Add(f[i][j], sum);
        }
    }
    for (int i = 2; i <= lim; i++) {
        if (!vis[i]) prime[++Pcnt] = i;
        for (int j = 1; j <= Pcnt && (x = prime[j] * i) <= lim; j++) {
            vis[x] = 1; if (!(i % prime[j])) break;
        }
    }
    for (int i = 1; i <= Pcnt; i++)
        for (int j = prime[i]; j <= lim; j += prime[i])
            fact[j].push_back(prime[i]);
    while (q--) {
        read(n); read(r); ans = 1;
        for (int d: fact[r]) {
            x = 0;
            while (!(r % d)) {
                r /= d; ++x;
            }
            ans = (ll)ans * f[n][x] % MOD;
        }
        printf("%d\n", ans);
    }
    return 0;
}
Codeforces Round #757 E. Divan and a Cottage(非递减权值线段树+标记永久化) 传送门 给出了n天的室外温度t[i],同时规定,如果第i天早上的室内温度为P,那么当t[i]>P,第i+1的室温变为P+1,如果小于,则变为P-1,等于则仍然是P。 按照样例解释一下输入的信息: 首先输入n,代表有n天,接下来是n组信息,代表每天的室外温度以及询问 每组信息由室外温度t、询问个数k、k个询问组成。对于第i组信息,首先给出室外温度t[i],然后给出k,接下来是k个询问,每个询问是一个非负数x[j],表示如果第一天早上的室温是x[j],那么第i天结束后,室温是多少? 比如第三组信息,首 阅读详情

相关推荐

代码片段提取与重组:从文件分析到自动化汇编的完整解决方案

数据处理是计算机科学中的基础概念,涉及从各种来源收集、清洗和转换信息的技术原理。在文本处理领域,字符串匹配和模式识别是实现自动化处理的核心技术,其价值在于能够高效处理大量非结构化数据。特别是在代码管理和文档分析场景中,经常需要从混合格式文件中提取分散的代码片段。本文基于字符编码分析和表格数据管理两个关键技术点,详细介绍了如何通过环境准备、分步处理和验证策略,解决代码片段收集过程中断和残余字符比较的实际问题。通过实现可靠的断点检测机制和相似度匹配算法,结合pandas DataFrame进行结构化数据管理,最

350

codeforces 757e Bash Plays with Functions

题意: 给你两个数 n和r  可以做r次分解 当r大于0 n可以分解成两个因子u和v   u*v=n   当r 等于0 n分解出的两个因子的gcd要为1 如题意所给的公式来计算最终结果 思路: 仔细观察 在 r相同的情况下 25 和 4  30和42  的答案是相同 是由于 他们的构成结构相同   即n=(a^x)*(b^y)*(c^z) ...

669

codeforces757E. Bash Plays with Functions(狄利克雷卷积 积性函数)

http://codeforces.com/contest/757/problem/E 题意 Sol 非常骚的一道题 首先把给的式子化一下,设$u = d$,那么$v = n / d$ $$f_r(n) = \sum_{d \mid n} \frac{f_{r - 1}(d) + f_{r - 1}(\frac{n}{d})}{2}$$ $$= \sum_{d\mid n} f_{...

weixin_34274029的博客 185

[Codeforces757E] : Bash Plays with Functions(积性函数)

传送门 这个东西在r=0的时候,就是 f0(n)=2(n的质因子个数)f_0(n)=2^{(n的质因子个数)} 然后这个东西明显是个积性函数 然后题目里给的式子其实就是代表fr+1=fr∗1f_{r+1}=f_r*1 然后因为f0和1f_0和1都是积性函数,那么当r∈Nr\in N时都满足frf_r是积性函数 然后我们有这样一个递推式dp[i][j]=∑jk=0dp[i−1][k]dp[

玫葵之蝶 434

[Codeforces 757E] Bash Plays with Functions (数论)

题目链接:http://codeforces.com/contest/757/problem/E?csrf_token=f6c272cce871728ac1c239c34006ae90 题目: 题解: $f_0(n) = 2^{n的不同质因子的个数}$ $ f_r(n) = \sum_{d|n}f_{r-1}(d)$ $f_0$是积性函数 , $f_r = f_0 * Id^r (...

weixin_30471065的博客 144

codeforces 757E】Bash Plays with Functions

【题目链接】:http://codeforces.com/problemset/problem/757/E 【题意】 给你q个询问; 每个询问包含r和n; 让你输出f[r][n]; 这里f[0][n]是n分解成两个数u,v的乘积的个数; 这里u和v互质; 而f[r][n]当r>0时,有个递推式; 【题解】 那个递推式等价于 即n...

AWCXV 134

[CodeForces757E]Bash Plays with Functions

题意: 定义函数fr(n)fr(n)f_r(n)在r=0r=0r=0时为整数对(p,q)(p,q)(p,q)满足p∗q=np∗q=np*q=n且gcd(p,q)=1gcd(p,q)=1gcd(p,q)=1的有序数对个数 在r≥1r≥1r\ge 1时,fr=∑u∗v=nfr−1(u)+fr−1(v)2fr=∑u∗v=nfr−1(u)+fr−1(v)2f_r=\sum_{u*v=n}\frac{f...

BeNoble_的博客 367

Codeforces 757E Bash Plays with Functions

积性函数+动态规划

YHaX的博客 487

[Codeforces757E]Bash Plays with Functions数学

这题推一吨东西出来就能做了 首先发现F0(x)F_0(x)是2质因子个数2^{质因子个数} 这个东西是完全积性函数,当然也是非完全积性函数 把式子化简,就能得到Fr(x)F_r(x)也是非完全积性函数 在特殊处理一下Fr(pq)F_r(p^q)(p是质数)这样形式的答案 分解质因数乘起来就好#include <bits/stdc++.h> #define mod 1000000007 #d

HbFS- 714

CF 757 E Bash Plays with Functions —— 积性函数与质因数分解

题目:http://codeforces.com/contest/757/problem/E 首先,f0(n)=2m,其中 m 是 n 的质因数的种类数; 而且 因为这个函数和1卷积,所以是一个积性函数,就可以每个质因子单独考虑; 而 f0(pq) = 2,对于每个质因子都一样! 所以可以 DP 预处理 而fr(n) = fr(p1e1) * fr(p2e2) * ......

aodan5477的博客 139

Codeforces 757 E Bash Plays with Functions

Discription Bash got tired on his journey to become the greatest Pokemon master. So he decides to take a break and play with functions. Bash defines a functionf0(n), which denotes the number of way...

weixin_30364147的博客 167

Bash Plays with Functions CodeForces - 757E (积性函数dp)

大意: 定义函数$f_r(n)$, $f_0(n)$为pq=n且gcd(p,q)=1的有序对(p,q)个数. $r \ge 1$时, $f_r(n)=\sum\limits_{uv=n}\frac{f_{r-1}(u)+f_{r-1}(v)}{2}$. $q$组询问, 求$f_r(n)$的值模1e9+7. 显然可以得到$f_0(n)=2^{\omega(n)}$, 是积性函数...

weixin_30426065的博客 102

CodeForces 757 E.Bash Plays with Functions(积性函数+dp)

Description 定义f0(n)f_0(n)为满足p⋅q=n,gcd(p,q)=1p\cdot q=n,gcd(p,q)=1的有序对(p,q)(p,q)对数,定义fr+1(n)=∑u⋅v=nfr(u)+fr(v)2f_{r+1}(n)=\sum\limits_{u\cdot v=n}\frac{f_r(u)+f_r(v)}{2},给出r,nr,n,求fr(n)f_r(n) Input

ZSQ 656

Codeforces757E.Bash Plays With Functions(积性函数 DP)

题目链接 \(Description\)   q次询问,每次给定r,n,求\(F_r(n)\)。 \[ f_0(n)=\sum_{u\times v=n}[(u,v)=1]\\ f_{r+1}(n)=\sum_{u\times v=n}\frac{f_r(u)+f_r(v)}{2}\] \(Solution\)   首先将\(f_r\)的式子化为 \[ f_{r+1}(n)=\sum_...

weixin_30567225的博客 149

CF 757E Bash Plays with Functions——积性函数+dp+质因数分解

题目:http://codeforces.com/contest/757/problem/E f0[n]=2^m,其中m是n的质因子个数(种类数)。大概是一种质因数只能放在 d 或 n/d 两者之一。 然后应该发现因为 f0 是积性的,所以 fr 也是积性的!因为是卷积得来的。 这样就能把每个质因数分开。对于每种质因数考虑 fr 的转移,则 f [ r ][ p^k ] = sigma(i:...

weixin_30414635的博客 102
上一篇: [容斥原理]BZOJ 2839: 集合计数
下一篇: [构造]AGC005C - Tree Restoring
Vectorxj
博客等级 码龄10年 35粉丝 231原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值