牛客-小w的a=b问题
题目传送门
sol1:老实做,预处理出所有2到1e5的素数,对所有数进行分解质因数,然后对比因子个数。感觉有点卡常,用了快读然后多次优化之后才过的,map也用上了。
- 素数筛,快速分解质因数
#include "bits/stdc++.h"
using namespace std;
typedef long long LL;
const int MAXN = 1e5 + ;
bool v[MAXN];
map<int, int> mp;
int p[MAXN], pos;
int a[MAXN], b[MAXN];
LL ca[MAXN], cb[MAXN];
void init() {
for (int i = ; i <= 1e5; i++) {
if (v[i] == false) {
p[++pos] = i;
mp[i] = pos;
for (int j = i << ; j <= 1e5; j += i)
v[j] = true;
}
}
}
inline int read() {
int n = ;
char c = getchar();
while (c < '' || c > '') c = getchar();
while (c >= '' && c <= '') {
n = n * + (c ^ '');
c = getchar();
}
return n;
}
void fun(int k, int c, LL* a) {
for (int i = ; v[k]; i++) {
while (k % p[i] == ) {
k /= p[i];
a[i] += c;
}
}
if (k != ) a[mp[k]] += c;
}
int main() {
init();
int t, n, m, k;
t = read();
while (t--) {
n = read(), m = read();
memset(ca, , sizeof(LL) * (pos + ));
memset(cb, , sizeof(LL) * (pos + ));
for (int i = ; i <= n; i++) a[i] = read();
for (int i = ; i <= m; i++) b[i] = read();
sort(a + , a + + n);
sort(b + , b + + m);
k = ;
for (int i = ; i <= a[n]; i++) {
while (i > a[k]) k++;
fun(i, n - k + , ca);
}
k = ;
for (int i = ; i <= b[m]; i++) {
while (i > b[k]) k++;
fun(i, m - k + , cb);
}
bool ok = true;
for (int i = ; i <= pos; i++) {
if (ca[i] != cb[i]) {
ok = false;
break;
}
}
if (ok) puts("equal");
else puts("unequal");
}
return ;
}
sol2:题解上说用哈希。虽然一开始也有想到哈希,但是怕哈希冲突,没怎么在比赛中用过哈希,没有哈希的意识。知道用哈希之后代码就信手拈来了,不过还是产生了一次哈希冲突,不要用1e9 + 7这种特殊素数,决定还是使用2147483587(int范围第二大的素数,怕最大的会被卡)。
- 哈希
#include "bits/stdc++.h"
using namespace std;
const int MAXN = 1e5 + ;
const int MOD = ;
int a[MAXN], b[MAXN];
int quick_pow(int n, int k) {
int ans = ;
while (k) {
if (k & ) ans = 1LL * ans * n % MOD;
n = 1LL * n * n % MOD;
k >>= ;
}
return ans;
}
int main() {
int t, n, m, k;
scanf("%d", &t);
while (t--) {
scanf("%d%d", &n, &m);
for (int i = ; i <= n; i++)
scanf("%d", &a[i]);
for (int i = ; i <= m; i++)
scanf("%d", &b[i]);
sort(a + , a + + n);
sort(b + , b + + m);
int ha = , hb = ;
k = ;
for (int i = ; i <= a[n]; i++) {
while (i > a[k]) k++;
ha = 1LL * ha * quick_pow(i, n - k + ) % MOD;
}
k = ;
for (int i = ; i <= b[m]; i++) {
while (i > b[k]) k++;
hb = 1LL * hb * quick_pow(i, m - k + ) % MOD;
}
if (ha == hb) puts("equal");
else puts("unequal");
}
return ;
}
牛客-小w的a=b问题的更多相关文章
- 牛客 小a与星际探索 bfs
链接:https://ac.nowcoder.com/acm/contest/317/C?&headNav=acm来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ ...
- 牛客 小a与星际探索
链接:https://ac.nowcoder.com/acm/contest/317/C来源:牛客网 小a正在玩一款星际探索游戏,小a需要驾驶着飞船从1号星球出发前往n号星球.其中每个星球有一个能量指 ...
- 牛客-小a的旅行计划 + 数学推导
小a的旅行计划 题意: 小a终于放假了,它想在假期中去一些地方游玩,现在有N个景点,编号为,同时小b也想出去游玩.由于一些特殊♂原因,他们的旅行计划必须满足一些条件 首先,他们可以从这N个景点中任意选 ...
- 牛客-小y的盒子
题目传送门 -------------------稍加观察就会发现,4n - 1就是题目要的答案.至于为什么,看官方的题解.不过这个n非常的大,用正常快速幂解决不了.这道题我学到的就是解决幂非常大的情 ...
- 牛客练习赛48 C 小w的糖果 (数学,多项式,差分)
牛客练习赛48 C 小w的糖果 (数学,多项式) 链接:https://ac.nowcoder.com/acm/contest/923/C来源:牛客网 题目描述 小w和他的两位队友teito.toki ...
- 牛客练习赛48 A· 小w的a+b问题 (贪心,构造,二进制)
牛客练习赛48 A· 小w的a+b问题 链接:https://ac.nowcoder.com/acm/contest/923/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C ...
- 牛客练习赛48 D 小w的基站网络
链接:https://ac.nowcoder.com/acm/contest/923/D来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言52428 ...
- 【牛客】小w的魔术扑克 (并查集?? 树状数组)
题目描述 小w喜欢打牌,某天小w与dogenya在一起玩扑克牌,这种扑克牌的面值都在1到n,原本扑克牌只有一面,而小w手中的扑克牌是双面的魔术扑克(正反两面均有数字,可以随时进行切换),小w这个人就准 ...
- 牛客小白月赛13 小A的柱状图(单调栈)
链接:https://ac.nowcoder.com/acm/contest/549/H来源:牛客网 题目描述 柱状图是有一些宽度相等的矩形下端对齐以后横向排列的图形,但是小A的柱状图却不是一个规范的 ...
随机推荐
- shell中sparksql语句调试、执行方式
1.命令方式执行sparksql查询 SQL="use mydatatable;;select count(1) from tab_videousr_onlne where p_regiio ...
- vue多选验证
vue select 多选 验证 <FormItem :prop="'formList.'+index+'.name'" label="姓名" :rule ...
- 109.大型的csv文件的处理方式
HttpResponse对象将会将响应的数据作为一个整体返回,此时如果数据量非常大的话,长时间浏览器没有得到服务器的响应,就会超过默认的超时时间,返回超时.而StreamingHttpResponse ...
- image compression with libjpeg
http://www.aaronmr.com/en/2010/03/test/ Working on the project I've seen in the need for compression ...
- 1.where子句的优化
不需要在牺牲可读性的情况下重写sql,因为mysql会自动进行类似的优化. 1.去掉无用的括号 ((a AND b) AND c OR (((a AND b) AND (c AND d)))) -&g ...
- 吴裕雄--天生自然GPU配置:查看本机显卡是否支持GPU
NVIDIA的GF8级别以上的显卡才能支持physx物理加速(即GPU加速),ATI的显卡不支持. 打开:设备管理器,点击:显示适配器
- UML-SSD-定义
1.NextGen例子 SSD来自用例文本 2.定义 1).针对的是用例的一个特定场景 2).参与者与系统之间交互事件(跨系统边界,不画系统内部流转,即黑盒) 比如:收银员 访问系统A.系统B,此时只 ...
- 年近30的Java程序员为了达到月入三万的目标,都做了哪些准备?
1.我觉得像我这般年纪的(29岁),有相对扎实技术功底的(就不自谦了),对赚钱有着强烈欲望的程序员,应该定一个切实的小目标——五年内月入三万! 之所以要定这个目标,最主要的原因是老婆的批评刺痛了我—— ...
- 自动按键的Sendkeys工具的下载和使用
大家好! 下面介绍一款自动按键的小工具:Sendkeys 下载地址 Sendkeys.rar 按键脚本的书写规则如下: 启动本工具后,在工具中打开一个脚本文件,然后在工具中按下Ctrl+A全选所有脚本 ...
- document.write的时机
document.write第一次加载进入页面的时候会紧跟文档,写入内容.但是如果在文档已经加载完毕之后,再通过点击的方式调用函数的话会直接把整个文档覆盖掉.