Gym

来源:互联网 发布:工厂进销存软件 编辑:程序博客网 时间:2024/05/16 10:49

题目链接:https://vjudge.net/problem/Gym-100623D
题意:给你n个数a[i],和m个数b[i],问你有几对数(a[i]能整除b[i])的
解析:我是直接把1e6里面,各个数的倍数都处理出来,直接加就好了(不过不明白为什么没有T

#include <iostream>#include <cstdio>#include <algorithm>#include <vector>#include <cstring>#include <queue>using namespace std;const int maxn = 1e6+100;const int inf = 0x7fffffff;int a[maxn];int vis1[maxn];int vis2[maxn];int main(void){    freopen("deposits.in","r",stdin);    freopen("deposits.out","w",stdout);    int n,m;    memset(vis1,0,sizeof(vis1));    memset(vis2,0,sizeof(vis2));    scanf("%d",&n);    for(int i=0;i<n;i++)        scanf("%d",&a[i]);    scanf("%d",&m);    for(int i=0;i<m;i++)    {        int x;        scanf("%d",&x);        vis1[x]++;    }    for(int i=1;i<maxn;i++)    {        for(int j=i;j<maxn;j+=i)            vis2[j] += vis1[i];    }    long long ans = 0;    for(int i=0;i<n;i++)        ans += vis2[a[i]];    printf("%I64d\n",ans);    return 0;}
  1. 列表内容
0 0
原创粉丝点击