2022/8/29 阿里巴巴第三题
用例过了,但是提交只有0,不知道哪里错了
有咩有懂的老哥
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<map>
using namespace std;
typedef long long ll;
const int maxn = 1e9 + 10;
const int N = 202200 + 10;
ll nums1[N], nums2[N];
ll cal(ll* nums, int len, int base) //返回[a,b]区间内base的倍数的个数
{
int res = 0;
for(int i = 0 ; i < len;i++)
if(nums[i] % base == 0)
res++;
return res;
}
int main()
{
int n , m;
cin >> n >> m;
for(int i = 0 ;i < n ;i++)
cin>> nums1[i];
for(int i = 0;i < m;i++)
cin>>nums2[i];
ll l2022, l1011, l337,l3, l2;
ll r2022, r1011, r337,r3, r2;
l2022 = cal(nums1,n, 2022);
l1011 = cal(nums1,n, 1011);
l2 = cal(nums1, n,2);
r2022 = cal(nums2,m, 2022);
r1011 = cal(nums2,m, 1011);
r2 = cal(nums2, m,2);
ll res = l2022 * m + (l1011 - l2022) * r2 + (l2 - l2022) * r1011 + (n - l2 - l1011 + l2022) * r2022;
ll ans = l2022 * m + (l1011 - l2022) * r2 + (l2 - l2022) * r1011 + (n - l2 - l1011 + l2022) * r2022;
printf("%lld\n", ans);
return 0;
} 
查看13道真题和解析