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​=1∑m​a2​=1∑m​a3​=1∑m​⋯an−1​∑m​an​∑m​[gcd(a1​,a2​,a3​,…,an−1​,an​)==d](a1​,a2​,a3​,…,an−1​,an​)k=dkda1​=1∑dm​​a2​=1∑dm​​a3​=1∑dm​​⋯an−1​∑dm​​an​∑dm​​[gcd(a1​,a2​,a3​,…,an−1​,an​)==1](a1​,a2​,a3​,…,an−1​,an​)k=dkdi=1∑dm​​ikdμ(i)a1​=1∑idm​​a2​=1∑idm​​a3​=1∑idm​​⋯an−1​=1∑idm​​an​=1∑idm​​(j=1∏n​ai​)k这是一个多项式=dkdi=1∑dm​​ikdμ(i)(j=1∑idm​​iK)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;
}

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

  1. 2019 ICPC银川区域赛 G - Pot!!(线段树维护动态RMQ)

    传送门 题目大意 若ppp为质数,定义potp(n)pot_p(n)potp​(n)为nnn分解质因数ppp的指数.给定一个初始全为111的序列aaa,有两种操作: MULTIPLY l r:将区间[ ...

  2. 2019 ACM - ICPC 上海网络赛 E. Counting Sequences II (指数型生成函数)

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  3. icpc西部区域赛_ICPC西部区域赛捷报传来!

    ICPC西部区域赛(新疆赛区)圆满结束软件学子斩获佳绩 2020年10月31日,由新疆大学信息科学与工程学院(网络空间安全学院)承办的ICPC国际大学生程序设计竞赛2020年西部区域赛(新疆赛区)圆满 ...

  4. 2020年 ICPC 亚洲区域赛(上海)G-Fibonacci

    ICPC 亚洲区域赛(上海) G-Fibonacci 题目 斐波那契数列为1,1,2,3,5,8,13,21,- 可以看到,这个数列有以下特点: 奇,奇,偶,奇,奇,偶- 当 xxx 与 yyy 相乘 ...

  5. icpc西部区域赛_信息学子在ACMICPC 2020中国(西部)大学生程序设计竞赛中喜获佳绩...

    2020年10月31日ACM-ICPC 2020中国(西部)大学生程序设计竞赛圆满结束,信息科学与工程学院组织51支队伍参赛,荣获2枚金牌,4枚银牌,17枚铜牌,成绩优异. 国际大学生程序设计竞赛(简 ...

  6. 第43届ACM icpc亚洲区域赛焦作站感想

    青岛痛失银牌,焦作又是铜牌一枚,现在想想,前面三个水题,我的原因太大了,老是犯各种zz小错误,明明能秒,却花了大量时间debug,导致三个小时才签完到,最后一个小时,F题的bfs没出来,B题也没出来, ...

  7. 2018年 ACM/ICPC亚洲区域赛 青岛赛区现场赛 比赛总结

    首先祝贺自己收获了ACM生涯中的第二枚铜牌. 首先吐槽一下中石油: 周六早上来到中国石油大学,连个志愿者小姐姐都没看到.(但是看到了女装大佬).报完到之后发现教练少了一张午餐券(要不要这么粗心).为了 ...

  8. 2017 ICPC沈阳区域赛

    2017 沈阳区域赛 题号 题目 难度 知识点 A BBP Formula B Bridge C Empty Convex Polygons D Defense of the Ancients E F ...

  9. 2022浙江省赛、ICPC昆明区域赛 游·寄

    前夜 周六打的浙江省赛.周日昆明区域赛,周五平常作息,早上和爸妈聊天 我说道 金华疫情情况还好,还能出校吃饭,没想到 噩耗马上就来了.金华突然有了几例阳性,其中有一位还是滴滴司机.线上教学的消息已发出 ...

最新文章

  1. Windows Server 2012下安装Hyper-V虚拟机
  2. Android 应用中十大常见 UX 错误
  3. Ubuntu14.04 Apollo 3.5安装
  4. 回顾Google IO 2016 -Keynote【图解】
  5. r语言 不同长度 list 转 dataframe_解决R效率问题—parallel多线程启动
  6. Atitit attilax在自然语言处理领域的成果
  7. Python3-环境篇-01-Python3安装
  8. ubuntu安装文泉驿字体
  9. html中元素的几种居中方法
  10. python卡方拟合性检验_卡方分布、卡方独立性检验和拟合性检验理论及其python实现...
  11. 20162327WJH2016-2017-2《程序设计与数据结构》课程总结
  12. 对整个网页进行长截图
  13. IDEA 2020.1.2 无法显示图片的魔幻解决方法
  14. gitlab编译安装史----虽败犹荣
  15. 为什么SEO效果不明显
  16. oracle10G 数据泵技术
  17. linux服务器搭建实验4报告,LINUX实验四报告
  18. [活动预告]倒数1天!开源世界高峰论坛将于北京举行,偶数科技将进行主题演讲和产品展示
  19. ZStack云平台应用堡垒机教程
  20. ad用户文件服务器登录过程初始化失败,域用户无法登录域故障处理(AD问题).docx...

热门文章

  1. java3n 1_1005 继续(3n+1)猜想(JAVA)
  2. text 热敏打印机_只要有想象力,打印机都能做游戏
  3. 怎么计算信息完整度_德阳冻货运镖怎么计算费用
  4. eltree ref什么时候有_Vue3响应式系统源码解析-Ref篇
  5. python随机生成100内的10个整数_用python随机生成数字教程_如何用Python编程随机产生10个随机整数,并输出这10个整数的和�9�3...
  6. 小猿学python_小猿圈python入门之转行零基础该如何学Python?
  7. php 获取浏览器时区,获取用户时区
  8. ado filter 多条记录_注意!武汉江南中心绿道武九线综合管廊工程开工,青山区多条道路通行规则有变...
  9. java+字节码工具64位_jclasslib 下载-jclasslib 32位64位(java字节码查看工具) 5.1 官方版 - 河东下载站...
  10. 计算机 运行命令,教你电脑运行命令