4454: C Language Practice

Time Limit: 20 Sec  Memory Limit: 24 MB
Submit: 501  Solved: 112
[Submit][Status][Discuss]

Description

Input

第一行输入一个正整数T(T<=85),表示测试数据的组数。
每组数据第一行包含两个正整数n,m(1<=n,m<=2000),表示序列的长度。
第二行包含n个正整数,表示a[0],a[1],...,a[n-1](0<=a[i]<=1000000)。
第三行包含m个正整数,表示b[0],b[1],...,b[m-1](0<=b[i]<=1000000)。

Output

对于每组数据输出一行一个整数,即答案。

Sample Input

3
3 2
5 9 6
3 4
2 2
8 9
0 6
1 1
9
6

Sample Output

6
22
3

HINT

注意:此题只有一个数据点。

Source

 

[Submit][Status][Discuss]

$O(N)-O(1)$的gcd黑科技

 #include <cstdio>

 inline char Char(void)
{
static const int siz = ; static char buf[siz];
static char *hd = buf + siz;
static char *tl = buf + siz; if (hd == tl)
fread(hd = buf, , siz, stdin); return *hd++;
} inline int Int(void)
{
int ret = , neg = , c = Char(); for (; c < ; c = Char())
if (c == '-')neg ^= true; for (; c > ; c = Char())
ret = ret * + c - ''; return neg ? -ret : ret;
} int g[][]; int fac[][]; int pre[], pri[], tot; inline int gcd(int a, int b)
{
if (a <= && b <= )
return g[a][b]; int ret = ; for (int i = ; i < ; ++i)
if (fac[a][i] != )
{
int t = fac[a][i]; if (pre[t])
{
int d = g[t][b % t];
ret *= d, b /= d;
}
else if (b % t == )
ret *= t, b /= t;
} return ret;
} signed main(void)
{
for (int i = ; i <= ; ++i)
for (int j = ; j <= ; ++j)
if (i == || j == )
g[i][j] = i + j;
else if (g[j][i % j])
g[i][j] = g[j][i % j];
else if (g[i % j][j])
g[i][j] = g[i % j][j];
else if (g[i][j % i])
g[i][j] = g[i][j % i];
else if (g[j % i][i])
g[i][j] = g[j % i][i]; fac[][] = fac[][] = fac[][] = ; for (int i = ; i <= ; ++i)
{
if (!pre[i])pri[++tot] = i,
fac[i][] = fac[i][] = , fac[i][] = i; for (int j = ; j <= tot && pri[j] * i <= ; ++j)
{
int num = pri[j] * i, p = pri[j]; pre[num] = p;
fac[num][] = fac[i][];
fac[num][] = fac[i][];
fac[num][] = fac[i][]; if (fac[num][] * p <= )
fac[num][] *= p;
else if (fac[num][] * p <= )
fac[num][] *= p;
else
fac[num][] *= p;
}
} for (int cas = Int(); cas--; )
{
static int n, m, a[], b[]; n = Int();
m = Int(); for (int i = ; i < n; ++i)
a[i] = Int(); for (int i = ; i < m; ++i)
b[i] = Int(); unsigned ans = ; for (int i = ; i < n; ++i)
for (int j = ; j < m; ++j)
ans += gcd(a[i], b[j]) ^ i ^ j; printf("%u\n", ans);
}
}

@Author: YouSiki

BZOJ 4454: C Language Practice的更多相关文章

  1. BZOJ4454: C Language Practice

    Description Input 第一行输入一个正整数T(T<=85),表示测试数据的组数. 每组数据第一行包含两个正整数n,m(1<=n,m<=2000),表示序列的长度. 第二 ...

  2. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  3. 英语口语考试资料Language learning

    "Learning a language is easy. Even a child can do it!" Most adults who are learning a seco ...

  4. 100 天从 Python 新手到大师

    Python应用领域和就业形势分析 简单的说,Python是一个“优雅”.“明确”.“简单”的编程语言. 学习曲线低,非专业人士也能上手 开源系统,拥有强大的生态圈 解释型语言,完美的平台可移植性 支 ...

  5. Python - 100天从新手到大师

    简单的说,Python是一个“优雅”.“明确”.“简单”的编程语言. 学习曲线低,非专业人士也能上手 开源系统,拥有强大的生态圈 解释型语言,完美的平台可移植性 支持面向对象和函数式编程 能够通过调用 ...

  6. 国内某Python大神自创完整版,系统性学习Python

    很多小伙伴纠结于这个一百天的时间,我觉得完全没有必要,也违背了我最初放这个大纲上来的初衷,我是觉得这个学习大纲还不错,自学按照这个来也能相对系统的学习知识,而不是零散细碎的知识最后无法整合,每个人的基 ...

  7. 课程五(Sequence Models),第二 周(Natural Language Processing & Word Embeddings) —— 0.Practice questions:Natural Language Processing & Word Embeddings

    [解释] The dimension of word vectors is usually smaller than the size of the vocabulary. Most common s ...

  8. 【BZOJ】【3053】The Closest M Points

    KD-Tree 题目大意:K维空间内,与给定点欧几里得距离最近的 m 个点. KD树啊……还能怎样啊……然而扩展到k维其实并没多么复杂?除了我已经脑补不出建树过程……不过代码好像变化不大>_&g ...

  9. BZOJ 4576: [Usaco2016 Open]262144

    Description 一个序列,每次可以将两个相同的数合成一个数,价值+1,求最后最大价值 \(n \leqslant 262144\) Sol DP. 这道题是 BZOJ 4580: [Usaco ...

随机推荐

  1. 与(&)、或(|)等运算符理解及其特殊用途

    1.按位与运算符(&) 在与运算中两个开关是串联的,如果我们要开灯,需要两个开关都打开灯才会打开.理解为A与B都打开,则开灯,所以是1&1=1任意一个开关没打开,都不开灯,所以其他运算 ...

  2. AS的使用技巧

    title: AS的使用技巧 date: 2016-04-01 23:34:11 tags: [AndroidStudio] categories: [Tool,IDE] --- 概述 本文记录如何使 ...

  3. 关于SQL while 循环嵌套 外部循环数据无法进入内部循环

    下面一般是,作为SQL新手第一次写循环嵌套的办法,但是大家会发现一个问题,那就是变量@i总是不能进入第二个循环. declare @i int ,@j int, @k int set @j = 1 - ...

  4. rest_framework_api规范

    目录 一.什么是RESTful 二.什么是API 三.RESTful API规范 四.基于Django实现API 五.基于Django Rest Framework框架实现 一. 什么是RESTful ...

  5. LeetCode 566. Reshape the Matrix (C++)

    题目: In MATLAB, there is a very useful function called 'reshape', which can reshape a matrix into a n ...

  6. Scrum立会报告+燃尽图(Final阶段第六次)

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2485 项目地址:https://coding.net/u/wuyy694 ...

  7. 王者荣耀交流协会final发布第四次scrum例会

    1.例会照片 成员高远博,冉华,王磊,王玉玲,任思佳,袁玥,王磊,王超同学因参加比赛不在学校,不能出席. master:王玉玲 2.时间跨度 2017年12月4日 18:00 — 18:18,总计18 ...

  8. CS小分队第二阶段冲刺站立会议(6月1日)

    昨日成果:完成了,文件图标的获取,以及代码删除获取文件的图标的功能:实现了从桌面拖动一个应用到窗体进行添加的功能: 遇到问题:获取的文件图标太小了,比较模糊:从外面拖动文件到窗体时,图标一直获取错误, ...

  9. beat冲刺(5/7)

    目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:beta冲刺(5/7) 团队部分 后敬甲(组长) 过去两天完成了哪些任务 ppt制作中 数据集标注 接下来的计划 制作p ...

  10. java 对象和基本数据类型 “==”区别

    “==”比较的是地址,牢记.1.对象.integer 是对象 Integer i1 = 20; Integer i2 = 20 ; System.out.println(i1 == i2); // t ...