题目传送门

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问题的更多相关文章

  1. 牛客 小a与星际探索 bfs

    链接:https://ac.nowcoder.com/acm/contest/317/C?&headNav=acm来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ ...

  2. 牛客 小a与星际探索

    链接:https://ac.nowcoder.com/acm/contest/317/C来源:牛客网 小a正在玩一款星际探索游戏,小a需要驾驶着飞船从1号星球出发前往n号星球.其中每个星球有一个能量指 ...

  3. 牛客-小a的旅行计划 + 数学推导

    小a的旅行计划 题意: 小a终于放假了,它想在假期中去一些地方游玩,现在有N个景点,编号为,同时小b也想出去游玩.由于一些特殊♂原因,他们的旅行计划必须满足一些条件 首先,他们可以从这N个景点中任意选 ...

  4. 牛客-小y的盒子

    题目传送门 -------------------稍加观察就会发现,4n - 1就是题目要的答案.至于为什么,看官方的题解.不过这个n非常的大,用正常快速幂解决不了.这道题我学到的就是解决幂非常大的情 ...

  5. 牛客练习赛48 C 小w的糖果 (数学,多项式,差分)

    牛客练习赛48 C 小w的糖果 (数学,多项式) 链接:https://ac.nowcoder.com/acm/contest/923/C来源:牛客网 题目描述 小w和他的两位队友teito.toki ...

  6. 牛客练习赛48 A· 小w的a+b问题 (贪心,构造,二进制)

    牛客练习赛48 A· 小w的a+b问题 链接:https://ac.nowcoder.com/acm/contest/923/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C ...

  7. 牛客练习赛48 D 小w的基站网络

    链接:https://ac.nowcoder.com/acm/contest/923/D来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言52428 ...

  8. 【牛客】小w的魔术扑克 (并查集?? 树状数组)

    题目描述 小w喜欢打牌,某天小w与dogenya在一起玩扑克牌,这种扑克牌的面值都在1到n,原本扑克牌只有一面,而小w手中的扑克牌是双面的魔术扑克(正反两面均有数字,可以随时进行切换),小w这个人就准 ...

  9. 牛客小白月赛13 小A的柱状图(单调栈)

    链接:https://ac.nowcoder.com/acm/contest/549/H来源:牛客网 题目描述 柱状图是有一些宽度相等的矩形下端对齐以后横向排列的图形,但是小A的柱状图却不是一个规范的 ...

随机推荐

  1. UML-什么是用例实现(场景实现)?

    1.总览图 解释: 用例--->领域模型 用例+领域模型--->设计模型(仅基于领域层的交互图) 2.什么是用例实现? 基于协作对象,如何在设计模型中实现某个用例.更确切的说是实现某个用例 ...

  2. css伪元素::before与::after使用基础示例

    1.指定文本前后添加内容 <div class="box">test</div> .box::before{ content: 'before'; marg ...

  3. MVC——EF 回顾总结

    回顾一下MVC的知识点. 其实开始 我在学校的知识对MVC 还是很模糊的一个概念.只是记得结合EasyUI 增删改查 和分页,代码都是模糊的 进过这段时间的学习,让我对MVC 有了一个很清楚的认识. ...

  4. 手机H5,用Jquery使图片自动填满两栏式排版

    遇上这样的排版,手机的解象度都不同,假如只用CSS3根本就做不出这样的排版:因此要用Jquery. 1. HTML <div class="postImgCenterCrop" ...

  5. 在阿里做了5年技术Leader,我总结出这些套路!

    转自 51CTO技术栈 内容 团队建设 团队管理 团队文化 沟通与辅导 招聘与解雇 互联网公司的技术团队管理通常分为两个方向:技术管理和团队管理,互联网公司的技术 TL 与传统软件公司的 PM 还是有 ...

  6. NFS 文件共享

    备注:NFS 文件共享需设置两部分:服务端和客户端 一.服务端设置 1.1.查看nfs包是否安装,未安装则重新安装 [root@localhost ~]# rpm -qa|grep rpcbind r ...

  7. idea使用Maven创建的JavaWeb项目新建文件时没有打包到target目录报错

    背景:在使用tomcat发布这个项目时,浏览网页,js没有效果. 问题:发现打包之后没有同步到target里 解决办法:点击最右侧的Maven栏->所建项目->Lifecycle-> ...

  8. pandas在指定列插入数据

    import pandas as pd import numpy as np df = pd.DataFrame(np.arange(15).reshape(5, 3), columns=['a', ...

  9. CF633H Fibonacci-ish II(莫队+线段树)

    温馨提示:本题十分卡常数,我手动开O2才过的.而数据范围不伦不类的n<=30000,常数小的O(n2)居然比O(n√nlogn)跑得快…… 考虑插进去一个元素对答案产生的影响.原本数列为Σa[i ...

  10. Proe4.0使用VB.net生成缩略图方法

    Private Sub btnRasterImage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ...