题目链接:http://acm.ecnu.edu.cn/contest/16/problem/K/

题目:

K. 计软联谊

Time limit per test: 7.0 seconds

Time limit all tests: 7.0 seconds

Memory limit: 512 megabytes

Accept / Submit: 19 / 398

在计算机和软件专业的联谊会上,计算机和软件的同学相间着排成一列。现在要计算相邻两个同学的友谊度。

友谊度 friend(a,b) 是这么计算的:令 a, b 两个整数分别是两个同学的属性,两个同学的友谊度取决于 a,b 第 k 大的公约数。如果不存在,就说明这两个同学之间完全没有友谊,友谊度为 −1。

Input

第一行是数据组数 T (1≤T≤60)。

对于每组数据:
第一行:首先是学生的数量 n (1≤n≤105),约定的常数 k (1≤k≤106)。
第二行:n 个整数,依次表示这些学生的属性值:m1,m2,…,mn (1≤mi≤106)。

Output

对于每组数据输出一行,以 Case x: 开头(x 表示数据编号,从 1 开始),后面是 n−1 个整数,分别是 friend(m1,m2),friend(m2,m3),…,friend(mn−1,mn),整数和整数之间用空格隔开。

Examples

input
2
3 1
4 6 12
6 2
13 12 12 24 36 30
output
Case 1: 2 6
Case 2: -1 6 6 6 3

Note

请注意输入输出上的优化!

题解:

  就每两个数gcd,求出最大公约数。然后求第k大的公约数。

  一开始理解错,以为第2大的公约数是最大公约数除以2,第3大则是除以4。dalao说是错的。

  第k大的公约数是最大公约数的约数(不一定是除以2,可以除以3什么的)。

  就先用筛法将1~1e6的每个数的约数筛出来。

  

 void init() {
for(int i = ;i<=L;i++){
for(int j = i;j<=L;j+=i){
P[j].push_back(i);
}
}
}

筛法

  详细代码:

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <string>
#include <vector>
#include <map>
#include <set>
#include <stack>
#include <queue>
#include <sstream>
#include <algorithm>
using namespace std;
#define pb push_back
#define mp make_pair
#define ms(a, b) memset((a), (b), sizeof(a))
#define eps 0.0000001
typedef long long LL;
typedef unsigned long long ULL;
const int inf = 0x3f3f3f3f;
const LL INF = 0x7fffffff;
const int maxn = 1e5+;
const int L = 1e6;
const int mod = 1e9+;
int m[maxn];
vector <int > P[L+];
int kase = ;
void init() {
for(int i = ;i<=L;i++){
for(int j = i;j<=L;j+=i){
P[j].push_back(i);
}
}
}
int gcd(int a, int b){
return b==?a:gcd(b, a%b);
}
void solve() {
int n, k;
scanf("%d%d", &n, &k);
for(int i = ;i<=n;i++)
scanf("%d", &m[i]);
printf("Case %d:", kase++);
for(int i = ;i<n;i++){
int x = gcd(m[i], m[i+]);
int len = P[x].size();
if(len-k>=){
printf(" %d", P[x][len-k]);
}
else
printf(" -1");
}
printf("\n");
}
int main() {
#ifdef LOCAL
freopen("input.txt", "r", stdin);
// freopen("output.txt", "w", stdout);
#endif // LOCAL
init();
int T;
scanf("%d", &T);
while(T--){
solve();
}
return ;
}

你努力的时候,比你厉害的人也在努力。

第九届ECNU Coder K.计软联谊的更多相关文章

  1. 第九届ECNU Coder A.足球锦标赛

    题目链接:http://acm.ecnu.edu.cn/contest/16/problem/A/ 题目: A. 足球锦标赛 Time limit per test: 2.0 seconds Time ...

  2. 第九届ECNU Coder F.蚂蚁(栈)

    题目链接:http://acm.ecnu.edu.cn/contest/16/problem/F/ 题目: F. 蚂蚁 Time limit per test: 0.5 seconds Time li ...

  3. 华东师范大学第十届ECNU Coder程序设计竞赛

    华东师范大学第十届ECNU Coder程序设计竞赛 浮点数模运算 solution 转成整数然后取模. 时间复杂度:\(O(1)\) 数螃蟹 solution 找出公差出现次数最多的作为公差,然后找出 ...

  4. 关于git

    一.Git基础教程  01.[入门练习]廖雪峰 git教程网:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8 ...

  5. VS工程里的文件都是啥?如何打包? 2015-03-04

    打完补充:以下内容全部是我一家之言,只是愿意分享,内容如有不妥还请见谅. ====================================================== 刚才接收了一份代 ...

  6. Expert C Programming 阅读笔记(CH2)

    P33    Bugs are by far the largest and most successful class of entity, with nearly a million known ...

  7. N天学习一个linux命令之rsync

    用途 主要用于本地和远程主机同步文件 特性 1 使用增量传输算法(delta-transfer algorithm) 2 支持ssh,rsync协议 3 可以用于本地同步文件 4 本地和远程主机都需要 ...

  8. 最小生成树(MST)Prim算法和Kruskal算法

    刚学完最小生成树,赶紧写写学习的心得(其实是怕我自己忘了) 最小生成树概念:一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边. 就是说 ...

  9. 知识图谱顶会论文(ACL-2022) PKGC:预训练模型是否有利于KGC?可靠的评估和合理的方法

    PKGC:预训练模型是否有利于KGC?可靠的评估和合理的方法 论文地址:Do Pre-trained Models Benefit Knowledge Graph Completion? A Reli ...

随机推荐

  1. sqluldr2 oracle直接导出数据为文本的小工具使用

    近期客户有需求,导出某些审计数据,供审计人进行核查,只能导出成文本或excel格式的进行查看,这里我们使用sqluldr2工具进行相关数据的导出. oracle导出数据为文本格式比较麻烦,sqluld ...

  2. SpringBoot中FreeMarker创建

    1.创建SpringBoot项目时,勾选freemarker依赖(web,dev) 2.Controller中向model中存放数据 package com.ziv.springbootbygrald ...

  3. PS把一张白色背景的图片设为透明

    方法一: 1.双击图层缩略图上的小锁图标(注意,这里不要拖动小锁进行删除锁定),弹出“新建图层”,确定 2.右键左侧第四个功能菜单,选择魔棒工具 3.用魔棒工具在白色背景区域点击一下,选中白色区域背景 ...

  4. 手把手教你用Pytorch-Transformers——部分源码解读及相关说明(一)

    一.简介 Transformers是一个用于自然语言处理(NLP)的Python第三方库,实现Bert.GPT-2和XLNET等比较新的模型,支持TensorFlow和PyTorch.本文介对这个库进 ...

  5. Python库指南

    Python库指南 1.time模块 作用:time模块是一个时间模块,与datetime模块它提供的功能是更加接近于操作系统层面. 应用场景:平时用的比较多的时间戳,等时间方面的操作,在爬虫方面经常 ...

  6. git把本地代码上传(更新)到github上

    # 初始化目录为本地仓库 git init # 添加所有文件到暂存去 git add . # 提交所有文件 git commit -m "init" # 添加远程仓库地址 git ...

  7. 固定标签(position: fixed)

    document.body.scrollTop 要改成 document.documentElement.scrollTop不然不生效 <!DOCTYPE html> <html l ...

  8. jenkins使用记录转自https://my.oschina.net/sanpeterguo/blog/197931

    摘要: jenkins(持续集成开源工具)提供了丰富的api接口,基本上所有的操作都可以使用curl来从后台调度,包括:创建项目,禁用项目,启用项目,获取项目描述,获取配置文件,普通触发,scm触发, ...

  9. jQ:"对象不支持“first”属性或方法"IE内核下不兼容first()、chilrdren()方法的处理

    场景:需要查找某元素下的第一个子集,使用了如下语句: $("#left_1>tbody").find(".menuTr").first().addClas ...

  10. Simple GB28181 System

    I. Deployment  / Architecture Block Diagram II. Resources Used 1. freeswitch —— sip server and media ...