牛客练习赛48 正整数哈希

题目链接:https://ac.nowcoder.com/acm/contest/923/B
题目大意:

在这里插入图片描述在这里插入图片描述
当时看了看数太大,大整数复杂度也高,仔细看了看公式既然全部是乘法,那么取模后结果应该也是一样的。a[i], b[i]范围<=10^5直接预处理阶乘。哈希搞一搞。当时有预感,会卡ull。不过都写完了。直接交一发,果然wa。然后直接mod个大整数就AC了。

#include <bits/stdc++.h>
#define LL long long
using namespace std;
unsigned LL mod = 1ll*1610612741;
unsigned LL p[100005];
int a[2000005];
int main()
{
    p[0]=1;
    for(unsigned LL i=1;i<=100000;i++)
    {
        p[i]=(p[i-1]*i)%mod;
    }
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int n, m;
        scanf("%d%d",&n,&m);
        unsigned LL s1=1, s2=1;
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&a[i]);
            s1=s1*p[a[i]]%mod;
        }
        for(int i=1;i<=m;i++)
        {
            scanf("%d",&a[i]);
            s2=s2*p[a[i]]%mod;
        }
        if(s1==s2)
        {
            printf("equal\n");
        }
        else
        {
            printf("unequal\n");
        }
    }

    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值