2019年ICPC银川区域赛 Easy Problem(简单莫比乌斯函数 + 欧拉降幂)

Easy Problem

∑a1=1m∑a2=1m∑a3=1m⋯∑an−1m∑anm[gcd(a1,a2,a3,…,an−1,an)==d](a1,a2,a3,…,an−1,an)k=dkd∑a1=1md∑a2=1md∑a3=1md⋯∑an−1md∑anmd[gcd(a1,a2,a3,…,an−1,an)==1](a1,a2,a3,…,an−1,an)k=dkd∑i=1mdikdμ(i)∑a1=1mid∑a2=1mid∑a3=1mid⋯∑an−1=1mid∑an=1mid(∏j=1nai)k这是一个多项式=dkd∑i=1mdikdμ(i)(∑j=1midiK)n\sum_{a_1 = 1} ^{m} \sum_{a_2 = 1} ^{m} \sum_{a_3 = 1} ^{m} \dots \sum_{a_{n - 1}} ^{m}\sum_{a_n} ^{m} [gcd(a_1, a_2, a_3, \dots, a_{n - 1}, a_{n}) == d](a_1, a_2, a_3, \dots,a_{n - 1}, a_n) ^k\\ = d ^{kd} \sum_{a_1 = 1} ^{\frac{m}{d}} \sum_{a_2 = 1} ^{\frac{m}{d}} \sum_{a_3 = 1} ^{\frac{m}{d}} \dots \sum_{a_{n - 1}} ^{\frac{m}{d}}\sum_{a_n} ^{\frac{m}{d}} [gcd(a_1, a_2, a_3, \dots, a_{n - 1}, a_{n}) == 1](a_1, a_2, a_3, \dots,a_{n - 1}, a_n) ^k\\ =d ^{kd} \sum_{i = 1} ^{\frac{m}{d}}i ^{kd} \mu(i) \sum_{a_1 = 1} ^{\frac{m}{id}}\sum_{a_2 = 1} ^{\frac{m}{id}}\sum_{a_3 = 1} ^{\frac{m}{id}}\dots\sum_{a_{n - 1} = 1} ^{\frac{m}{id}}\sum_{a_{n} = 1} ^{\frac{m}{id}} (\prod_{j = 1} ^{n} a_i) ^k\\ 这是一个多项式\\ = d ^{kd} \sum_{i = 1} ^{\frac{m}{d}}i ^{kd} \mu(i) (\sum_{j = 1} ^{\frac{m}{id}}i ^K) ^n a1=1ma2=1ma3=1man1manm[gcd(a1,a2,a3,,an1,an)==d](a1,a2,a3,,an1,an)k=dkda1=1dma2=1dma3=1dman1dmandm[gcd(a1,a2,a3,,an1,an)==1](a1,a2,a3,,an1,an)k=dkdi=1dmikdμ(i)a1=1idma2=1idma3=1idman1=1idman=1idm(j=1nai)k=dkdi=1dmikdμ(i)(j=1idmiK)n

到这里这道题目就化简完成了,只需要通过简单的数列求和加欧拉降幂即可得到答案。

/*Author : lifehappy
*/
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#include <bits/stdc++.h>using namespace std;typedef long long ll;const int inf = 0x3f3f3f3f;
const double eps = 1e-6;const int N = 1e5 + 10, mod = 59964251, phi = 59870352;int mu[N], prime[N], cnt;ll m, d, k, n, sum[N];bool st[N];char str[N];ll quick_pow(ll a, int n, int mod = 59964251) {ll ans = 1;while(n) {if(n & 1) ans = ans * a % mod;a = a * a % mod;n >>= 1;}return ans;
}void init() {memset(st, 0, sizeof st);cnt = 0;mu[1] = 1, sum[1] = 1;for(int i = 2; i < N; i++) {if(!st[i]) {mu[i] = -1;prime[cnt++] = i;sum[i] = quick_pow(i, k);}for(int j = 0; j < cnt && i * prime[j] < N; j++) {st[i * prime[j]] = 1;sum[i * prime[j]] = sum[i] * sum[prime[j]] % mod;if(i % prime[j] == 0) break;mu[i * prime[j]] = -mu[i];}}   for(int i = 1; i < N; i++) {sum[i] = (sum[i] + sum[i - 1]) % mod;}
}ll solve(ll m) {ll ans = 0;for(ll i = 1; i <= m; i++) {ans = ans + 1ll * mu[i] * quick_pow(i, k * n % phi + phi) % mod * quick_pow(sum[m / i], n + phi) % mod;}return (ans % mod + mod) % mod;
}int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);// ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);int T;scanf("%d", &T);while(T--) {scanf("%s %lld %lld %lld\n", str + 1, &m, &d, &k);init();int len = strlen(str + 1);n = 0;for(int i = 1; i <= len; i++) {n = n * 10 + str[i] - '0';n %= phi;}ll ans = quick_pow(d, k * n % phi + phi) * solve(m / d) % mod;printf("%lld\n", ans);}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/314235.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P3357 最长k可重线段集问题(网络流/串联/拆点)

P3357 最长k可重线段集问题 对于n条开线段&#xff0c;选择一个子集使得任意xp和子集相交的直线个数小于等于k&#xff0c;并使得选择的线段长度之和最大。 这道题看上去和区间集没有什么区别&#xff0c;只是费用发生变化&#xff0c;但是要注意一个特殊情况&#xff0c;那就…

项目实战中如何使用抽象类和接口

引子&#xff1a;时常会有这么一个疑惑&#xff0c;抽象类和接口功能好像&#xff0c;真正用起来该如何抉择呢&#xff1f;&#xff1f;好问题。。来看看书上怎么说的&#xff08;C#7.0本质论&#xff09;虽然方法可在基类中声明为抽象成员&#xff0c;但是&#xff01;&#x…

番茄日志发布1.0.3版本-增加Kafka支持

番茄日志&#xff08;TomatoLog&#xff09;能做什么可能你是第一次听说TomatoLog&#xff0c;没关系&#xff0c;我可以从头告诉你&#xff0c;通过了解番茄日志&#xff0c;希望能帮助有需要的朋友&#xff0c;番茄日志处理将大大降低你采集、分析、处理日志的过程。介绍Toma…

Java String类型变量的比较问题

今天写程序的时候&#xff0c;发现了一个很奇怪的问题&#xff0c;代码如下&#xff1a; if((address.getCountry())!"国家"){ ad.insertAddress(address); //将只有国家、省份、城市三列的Address对象插入到数据库表格中 } 其中&#xff0c;我设置了断点进行调试…

P2494 [SDOI2011]保密(网络流/最小割/01分数规划)

P2494 [SDOI2011]保密 这道题是一个很综合的题目 首先有一个二分图&#xff0c;到达一个点就可以到达所有该点相连的边&#xff0c;然后需要覆盖所有边&#xff0c;然后给定一张图你从起点出发然后可以到达二分图的节点&#xff0c;保证没有环&#xff0c;每条边有时间和花费&…

B. Product(2019ICPC西安邀请赛)(杜教筛)

Product ∑i1n∑j1n∑k1ngcd⁡(i,j)[k∣gcd⁡(i,j)]∑k1n∑i1nk∑j1nkgcd⁡(ik,jk)∑k1nk∑i1nk∑j1nkgcd⁡(i,j)∑k1nk∑d1nkd∑i1nkd∑j1nkd[gcd⁡(i,j)1]∑k1nk∑d1nkd(∑i1nkd2ϕ(i)−1)Tkd∑T1n∑k∣TkTk(∑i1nT2ϕ(i)−1)∑T1nTσ0(T)(∑i1nT2ϕ(i)−1)\sum_{i 1} ^{n} …

ArangoDB 3.5发布:流事务API、蒙面数据、搜索性能大幅提升、最短路径功能

ArangoDB 3.5 发布了。ArangoDB 是一个分布式原生的多模型数据库&#xff0c;具有灵活的文档、图形和键值数据模型。使用方便的 SQL 查询语言或 JavaScript 扩展构建高性能应用程序。此版本亮点包括&#xff1a;期待已久的 Streaming Transactions API&#xff0c;可以直接使用…

Java StringBuffer相关解惑

在编程过程中遇到的StringBuffer初始化以及赋值的时候&#xff0c;遇到的问题。 StringBuffer sbnew StringBuffer(); // StringBuffer sb1new StringBuffer(1000); // System.out.println("sb capacity:"sb.capacity()); //默认容量是16&#xff0c;StringB…

P3511 [POI2010]MOS-Bridges(网络流/欧拉回路)

P3511 [POI2010]MOS-Bridges 给出一个图&#xff0c;边正着走和反着走的边权不同&#xff0c;求解最大边权最小的欧拉回路&#xff0c;输出方案。 首先看到最大边权最小我们就可以想到二分答案&#xff0c;然后现在在剩余的图上我们要判断是否存在欧拉回路&#xff0c;我们可…

Easy Math(ACM-ICPC 2018 徐州赛区网络预赛)(递归 + 杜教筛)

Easy Math 推式子 ∑i1mμ(in)∑i1mμ(indd)&#xff0c;d是n的一个质因子i,d互质项有(−∑i1mμ(ind))&#xff0c;由于减去了多余的非互质项&#xff0c;所以加上&#xff0c;−∑i1mμ(ind)∑i1mdμ(idnd)−∑i1mμ(ind)∑i1mdμ(in)\sum_{i 1} ^{m} \mu(in)\\ \sum_{i 1…

英雄会在线编程题目(请大家不吝赐教)

<span style"font-size:18px;">最近看了一道英雄会在线编程题目&#xff0c;题目的介绍如下&#xff1a;</span> <span style"font-size:18px;"></span> <span style"font-size:18px;">题目详情&#xff1a;</…

P2304 [NOI2015] 小园丁与老司机(网络流/上下界网络流)

P2304 [NOI2015] 小园丁与老司机 平面上有n个点&#xff0c;每次可以向左、右、上、左上45度、右上45度移动&#xff0c;然后直线移动到达第一个没有到过的点&#xff0c;如果没有这样的点就不能移动&#xff0c;求解一条最长路&#xff0c;然后求解将所有可能不是左右移动的道…

ASP.NET Core on K8S深入学习(7)Dashboard知多少

本篇已加入《.NET Core on K8S学习实践系列文章索引》&#xff0c;可以点击查看更多容器化技术相关系列文章。在第二篇《部署过程解析与Dashboard》中介绍了如何部署Dashboard&#xff0c;但是没有更多地介绍如何使用Dashboard&#xff0c;本文就来对Dashboard的使用进行补充。…

Convex Hull (ACM-ICPC 2018 沈阳赛区网络预赛) 存个公式

Convex Hull gay(i){0ifikxx,x>k,k>1iielse}求∑i1n∑j1igay(j)∑i1n(n−i1)gay(i)∑i1n(n−i1)μ2(i)i2因为μ2(n)∑i2∣nμ(i)&#xff0c;容斥定理显然得到有原式∑i1n(n−i1)i2∑j2∣iμ(j)(n1)∑i1n∑j2∣iμ(j)−∑i1ni3∑j2∣iμ(j)(n1)∑j1nμ(j)∑j2∣ii2−∑j1…

程序员的自我修养

一、技术类——互联网天际的摘星者 Unix环境高级编程&#xff08;第3版&#xff09; 编程珠玑 Python核心编程&#xff08;第二版&#xff09; 算法谜题 JavaScript框架设计 鸟哥的Linux私房菜 基础学习篇(第三版) 游戏机制——高级游戏设计技术 第一本Docker书 Swift …

多项式对数函数|指数函数(多项式)

多项式对数函数|指数函数 这个思路就是先求导然后再积分&#xff0c;这样就可以得到一个式子&#xff0c;对于多项式对数函数&#xff0c;我们就可以直接求解了&#xff0c;然后对于多项式指数函数还需要使用分治fft。 多项式对数&#xff1a; #include<bits/stdc.h> …

P5221 Product(反演)

P5221 Product 推式子 ∏i1n∏j1nlcm(i,j)gcd(i,j)∏i1n∏j1nijgcd(i,j)2我们考虑上面∏i1n∏j1nij∏i1nin∏j1nj∏i1ninn!n!n∏i1nin最后得到n!2n再考虑下面化简∏i1n∏j1ngcd(i,j)2∏d1nd2∑i1nd∑j1nd[gcd(i,j)1]对∑i1nd∑j1nd[gcd(i,j)1]化简∑k1ndμ(k)(nkd)2整体化简后…

【学习笔记】Docker - 02. 在容器中运行软件(上)

2.1 控制容器: 构建一个网站监视器 需求: 客户想让你做一个网站, 这个网站需要被紧密的监视, 如果服务器宕机了, 那么它们的团队会收到相关的邮件. 这里用到了3个容器. 第一个运行NGINX; 第二个运行一个叫做mailer的程序. 这两个容器都是detached的. Detached 表示容器将在后台…

P4249 [WC2007]剪刀石头布(网络流/费用流)

P4249 [WC2007]剪刀石头布 在一个竞赛图上一些边的方向已经确定&#xff0c;但是还有一些边的方向没有确定&#xff0c;求解最多有多少三元环。 首先看到三元环个数&#xff0c;按照套路我们利用度数计算&#xff0c;然后考虑每一条边&#xff0c;每一条边的贡献就是使两个点…

算法学习之旅

问题&#xff1a;设计一个算法&#xff0c;计算出n阶乘中尾部零的个数 例如: 11! 39916800&#xff0c;因此应该返回 2 挑战&#xff1a;O(logN)的时间复杂度 想法1&#xff1a; 找出1–n中每个数字能够被5或者10整除的次数&#xff0c;加在一起就是答案。但是时间复杂度是…