CDOJ 1171 两句话题意
题目链接:http://acm.uestc.edu.cn/#/problem/show/1171
题解:
这道题应该从gcd出来的值入手。
代码:
#include<iostream>
#include<cstring>
#include<queue>
#include<vector>
#include<algorithm>
#include<cstdio>
#define MAX_N 2000006
using namespace std; typedef long long ll; int a[MAX_N];
int n; int T;
const int mod=; int cnt[MAX_N]; ll Pow(ll a,ll b) {
ll res = ;
while (b) {
if (b & )res = res * a % mod;
b >>= ;
a = a * a % mod;
}
return res;
} ll ways[MAX_N];
int k; int main() {
scanf("%d", &T);
while (T--) {
int maxA = -;
memset(a, , sizeof(a));
memset(cnt, , sizeof(cnt));
memset(ways, , sizeof(ways));
scanf("%d%d", &n, &k);
for (int i = ; i < n; i++) {
int t;
scanf("%d", &t);
maxA = max(maxA, t);
a[t]++;
}
for (int i = ; i <= maxA; i++)
for (int j = ; j * i <= maxA; j++)
cnt[i] += a[i * j];
for (int i = ; i <= maxA; i++)
ways[i] = (Pow(, cnt[i]) - + mod) % mod;
for (int i = maxA; i >= ; i--)
for (int j = ; j * i <= maxA; j++)
ways[i] = (ways[i] - ways[i * j] + mod) % mod;
ll ans = ;
for (int i = ; i <= maxA; i++)
ans = (ans + ways[i] * Pow(i, k)) % mod;
printf("%lld", ans);
if(T!=)printf("\n");
}
return ;
}
CDOJ 1171 两句话题意的更多相关文章
- 神级程序员通过两句话带你完全掌握Python最难知识点——元类!
千万不要被所谓"元类是99%的python程序员不会用到的特性"这类的说辞吓住.因为 每个中国人,都是天生的元类使用者 学懂元类,你只需要知道两句话: 道生一,一生二,二生三,三生 ...
- 两句话掌握python最难知识点——元类
千万不要被所谓“元类是99%的python程序员不会用到的特性”这类的说辞吓住.因为每个中国人,都是天生的元类使用者 学懂元类,你只需要知道两句话: 道生一,一生二,二生三,三生万物 我是谁?我从哪来 ...
- 两句话掌握 Python 最难知识点——元类
千万不要被所谓“元类是99%的python程序员不会用到的特性”这类的说辞吓住.因为每个中国人,都是天生的元类使用者 学懂元类,你只需要知道两句话: 道生一,一生二,二生三,三生万物 我是谁?我从哪来 ...
- Leetcode884.Uncommon Words from Two Sentences两句话中的不常见单词
给定两个句子 A 和 B . (句子是一串由空格分隔的单词.每个单词仅由小写字母组成.) 如果一个单词在其中一个句子中只出现一次,在另一个句子中却没有出现,那么这个单词就是不常见的. 返回所有不常用单 ...
- 简单两句话解释下prototype和__proto__
先上两句代码: var Person = function () {}; var p = new Person(); 把new的过程拆分成以下三步: <1> var p={}; 也就是说, ...
- 两句话帮你彻底记住gdb之eXamining memory
对于刚学习Unix/Linux环境C编程的小朋友们或者写了很多所谓的C代码的老手们(其实很可能是机械程序员或者是伪程序员)来说,要记住gdb的eXaming memory的语法其实是相当不容易的,如果 ...
- 领扣(LeetCode)两句话中的不常见单词 个人题解
给定两个句子 A 和 B . (句子是一串由空格分隔的单词.每个单词仅由小写字母组成.) 如果一个单词在其中一个句子中只出现一次,在另一个句子中却没有出现,那么这个单词就是不常见的. 返回所有不常用单 ...
- 用sql合并列,两句话合为一句
合并bc两列 UPDATE `test` SET `a`=concat(`b`,`c`) 清空a列 UPDATE `test` SET `a` = NULL
- [Swift]LeetCode884. 两句话中的不常见单词 | Uncommon Words from Two Sentences
We are given two sentences A and B. (A sentence is a string of space separated words. Each word co ...
随机推荐
- python 类的使用
目录 类的继承 类的派生 类的组合 菱形继承问题 多态与多态性 dataclass的使用 类的继承 什么是继承,在生活中,子承父业,父亲和儿子就是继承的关系 在python中,父类和子类(派生类),父 ...
- Python虚拟机之for循环控制流(二)
Python虚拟机中的for循环控制流 在Python虚拟机之if控制流(一)这一章中,我们了解if控制流的字节码实现,在if控制结构中,虽然Python虚拟机会在不同的分支摇摆,但大体还是向前执行, ...
- 修改Typora的快捷键【markdown软件】
修改Typora的快捷键 魔芋:Typora是一款不错的编写markdowm的软件,推荐使用. 魔芋:修改这个文件conf.user.json "keyBinding": { ...
- luogu2765 魔术球问题
发现好像没人来证明贪心啊--那我来写一下它的证明 欲证明:放一个数在已有的柱上(如果可以)总是比新开一个柱更优的 假如已经放了x1..x2....xu..xv..xw.... 现在我要放xx 我有两种 ...
- 记一次WMS的系统改造(3)— 行进中的复盘
行进中的波折 革新总会面对一些阻力和风险,一种新的观念.一种新的模式要来替代既有的产品,从来都不是一件简单的事,在WMS改造这件事上我们一开始就提出两种概念货物驱动和任务驱动,并找到一个标杆产品Sla ...
- linux随笔4
vim编辑器: 启动vim编辑器,只需键入vim 和希望编辑的文件:vim mongo.sh 如果文件存在,将显示整个内容显示到进行编辑的缓冲区,如果文件不存在,打开一个新的缓冲区进行编辑. 内容未占 ...
- [python][oldboy]strip
- C语言总结(3)
1.字符输入函数getchar 输入一个字符 char ch; ch=getchai(); 字符输出函数putchar 输出一个字符 putchar(输出参数): 2.调用scanf和printf输入 ...
- EF知识和经验
AsNoTracking提高查询性能 AsNoTracking的作用就是在查询的时候不做追踪,这样会查询的更快,但是这样做会有一个缺陷(不能对查询的数据做修改操作). var student2 = d ...
- 关于iOS 7的几个开源项目
MBSwitch MBSwitch是一个体现了iOS 7扁平化设计风格的UISwitch,支持iOS 7以下系统.允许使用者进行颜色的深度自定义,你可以定义边框的颜色,开/关的颜色以及按钮的颜色. ...