前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >每日一题 | 两个序列归并问题

每日一题 | 两个序列归并问题

作者头像
TechFlow-承志
发布2020-08-05 11:31:47
3770
发布2020-08-05 11:31:47
举报
文章被收录于专栏:TechFlowTechFlow

昨日问题

每日一题 | 这道因式分解问题你能想出解法吗?

这道题出自codeforces,链接:https://codeforces.com/gym/102646/problem/A1

这道题是一个简单的因子拆分问题,对于一个数x来说,我们需要先找到它所有的因子。然后枚举一下因子的组合情况就可以了,因为n的范围很小只有2000。对于2000以内的数而言,它的因子数量不会很多。

题目虽然要求的是找到三个因子i,j,k,但是对于确定的n而言,当i和j确定了,k也就确定了,所以只需要两重循环遍历一下就可以了。

所以这道题一共可以分成两个步骤,第一个步骤是对于x我们找到它所有的因子,其次我们用i和j两个变量遍历因子,再计算出k,计算一下满足条件的i,j和k的数量即可。由于n的范围比较小,我们基本上怎么玩都可以,只要不超过n方的复杂度都可以接受的。

代码语言:javascript
复制
import math


def factorization(n):
    factors = []
    # 获取因子只需要遍历到根号n即可
    for i in range(1, int(math.sqrt(n)) + 1):
        if n % i == 0:
            factors.append(i)
            if i != n // i:
                factors.append(n // i)

    cnt = 0
    for i in factors:
        for j in factors:
            if i * j > n or n % (i * j) != 0:
                continue
            k = n // (i * j)
            if i <= j <= k:
                cnt += 1

    return cnt


n = int(input())


for i in range(1, n+1):
    print(factorization(i))

今日问题

给定两个相同长度的序列A和B,我们要用A和B两个序列合并成新的序列C。每次我们从这两个序列其中一个头部拿走一个元素放入C末尾,直到A和B序列为空为止。

请问以这种方法得到的字典序最小的C。

样例

代码语言:javascript
复制
input

7
6 10 4 2 13 12 7
9 8 11 3 5 1 14

output

6 9 8 10 4 2 11 3 5 1 13 12 7 14 
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Coder梁 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 每日一题 | 这道因式分解问题你能想出解法吗?
  • 今日问题
    • 样例
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档