题目传送门

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. Git 报错:fatal: refusing to merge unrelated histories

    背景:[接上篇git push 出错的随笔]当 pull 远端仓库到本地的时候,出现以下错误: 错误情况: 出错原因:主要原因还是在于本地仓库和远程仓库实际上是独立的两个仓库,假如我之前是直接以 cl ...

  2. Linux CMD 笔记 & 正则表达式

    一.linux bash 1. 进程名查找kill ps -ef | grep xxxx| grep -v grep| cut -c 9-15 | xargs kill -9 2.端口号kill 占用 ...

  3. PCB布局注意事项

    PCB布局注意事项   1.实现统一功能电路模块中的元件应采用就近集中原则,同时数字电路和模拟电路分开; 2.定位孔.标准孔等非安装孔周围1.27mm 内不得贴装元.器件,螺钉等安装孔周围3.5mm( ...

  4. MQL4编程—值传递和引用传递

    定义 简单的说就是给一个变量或者对象取一个别名(引用和被引用的共享存储单元,要用修饰符&). 引用的用法 在MQL4中通过调试只接受引用作为函数参数的用法,在函数参数传递过程中,有两种传递方式 ...

  5. Git&GitHub 基本使用

    如果是Windows用户需要自行去Git的官网下载Git工具 相信以您的聪明才知不需要一会就可以安装好Git工具了 博主这里是MacOS系统,本省就自带Git工具就不演示安装了 在完成一个简单的Git ...

  6. UML-为什么要画领域模型?

    不熟悉业务的情况下, 1).找到关键概念和词汇 2).概念间的关系 熟悉业务的情况下, 1).梳理思路 完美不是目的. 另外,减少标示差异.如下图

  7. Spring的设计理念和整体架构

    1.Spring的各个子项目 Spring Framework(Core):这是我们熟知的Spring项目的核心.Spring Framework(Core)中包含了一系列Ioc容器的设计,提供了依赖 ...

  8. Python程序中的线程操作(线程池)-concurrent模块

    目录 Python程序中的线程操作(线程池)-concurrent模块 一.Python标准模块--concurrent.futures 二.介绍 三.基本方法 四.ProcessPoolExecut ...

  9. 注解ImportBeanDefinitionRegistrar ImportSelector

    ImportBeanDefinitionRegistrar动态注册bean https://blog.csdn.net/jiachunchun/article/details/94569246 Spr ...

  10. 14 微服务电商【黑马乐优商城】:day02-springcloud(理论篇四:配置Robbin负载均衡)

    本项目的笔记和资料的Download,请点击这一句话自行获取. day01-springboot(理论篇) :day01-springboot(实践篇) day02-springcloud(理论篇一) ...