首页 > 其他分享 >319场周赛 最小公倍数为K的子数组的数目

319场周赛 最小公倍数为K的子数组的数目

时间:2022-11-14 11:23:41浏览次数:48  
标签:周赛 319 nums 公倍数 求解 最小 int 数组

# 319场周赛 最小公倍数为K的子数组的数目

给你一个整数数组 nums 和一个整数 k ,请你统计并返回 nums 的 子数组 中满足 元素最小公倍数为 k 的子数组数目。

子数组 是数组中一个连续非空的元素序列。

数组的最小公倍数 是可被所有数组元素整除的最小正整数。

 

示例 1 :

输入:nums = [3,6,2,7,1], k = 6
输出:4
解释:以 6 为最小公倍数的子数组是:
- [3,6,2,7,1]
- [3,6,2,7,1]
- [3,6,2,7,1]
- [3,6,2,7,1]
示例 2 :

输入:nums = [3], k = 2
输出:0
解释:不存在以 2 为最小公倍数的子数组。
 

提示:

1 <= nums.length <= 1000
1 <= nums[i], k <= 1000

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/number-of-subarrays-with-lcm-equal-to-k
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 

# 解题思路

数论相关题目。由于序列的长度为1000,所以可以遍历所有的子数组并求解其最小的公倍数。求解两个数(a,b)的最小公倍数,a * b / gcd(a,b)。求解多个数的最小公倍数(a,b,c),可以先求解ab的最小公倍数,再和c求解最小公倍数。这样就可以逐渐维护子数组的最小公倍数,时间复杂度$O(n ^ 2 log (n))$其中log(n)为求解最大公因数的时间复杂度。

 

code

class Solution {
public:
    int subarrayLCM(vector<int>& nums, int k) {
        
        int ans = 0;

        for(int i = 0;i < nums.size();i ++)
        {
            int t = nums[i];

            for(int j = i;j < nums.size();j ++)
            {
                t = t * nums[j] / __gcd(t,nums[j]);

                if(t == k ) ans ++;
                if(t > k) break;
            }
        }

        return ans;
    }
};

标签:周赛,319,nums,公倍数,求解,最小,int,数组
From: https://www.cnblogs.com/huangxk23/p/16888404.html

相关文章

  • 第319场周赛 温度转换
    第319场周赛温度转换给你一个四舍五入到两位小数的非负浮点数celsius来表示温度,以摄氏度(Celsius)为单位。你需要将摄氏度转换为开氏度(Kelvin)和华氏度(Fahrenheit),并以......
  • 2022-2023 20221319《计算机基础与程序设计》第十一周学习总结
    作业信息这个作业属于那个班级:https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP作业要求:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK06作业目标:《计算......
  • LeeCode 319周赛复盘
    T1:温度转换思路:模拟publicdouble[]convertTemperature(doublecelsius){returnnewdouble[]{celsius+273.15,celsius*1.80+32.00};}T2:最小公倍数......
  • Acwing第 77 场周赛
    (简单)4716.进球-AcWing题库#include<iostream>#include<map>usingnamespacestd;map<string,int>mp;intmain(){intn;cin>>n;s......
  • 2022-11-08个人周赛
    B.JamieandBinarySequence(changedafterround)y最小,字典序最大先按二进制分解,最大的为2x。如果全都拆成2x-1,拆完之后总个数还比k小,就拆,不然就拆最小的#include......
  • Microsoft.Data.SqlClient.SqlException (0x80131904) 证书链是由不受信任的颁发机构
      解决方法:直接在“数据库连接字符串最后面”增加证书信任的配置。;TrustServerCertificate=true或者连接字符串里的设置是:Encrypt=True;TrustServerCertifica......
  • CodeStar第五周周赛
    T1:复合逻辑表达式本题难度中等,线性\(dp\)问题。根据最后一个运算递推:如果是AND,需要两边都是true;如果是OR,只需任意一个是true当S[i]='AND'y[i-1]=T且x[i]=T:......
  • ACWING 第 76 场周赛 ABC
    https://www.acwing.com/activity/content/2589/这场周赛也很简单,除了C我在赛场上写的时候有点小bug,赛时没改出来,哎,真废啊4713.反转字符串#include<bits/stdc++.h>u......
  • OJ周赛第二场——排名
    排名 问题描述 有一个n个人的班级。你知道每个人的成绩,需要输出每个人的排名。 输入 第一行一个整数n。(1≤n≤10^5)第二行n个数,表示每个人的成绩c。(1......
  • OJ周赛第三场——最大和数列
    最大和数列 问题描述 给定一个长为m的序列b你需要构造出一个序列A满足:对于所有1≤i≤m,i在A中出现了bi次定义f(A) 的值如下:求满足条件的 f(A)的最大......