首页 > 其他分享 >lc2470. 最小公倍数为 K 的子数组数目(简单dp)

lc2470. 最小公倍数为 K 的子数组数目(简单dp)

时间:2022-11-23 22:38:23浏览次数:48  
标签:nums 公倍数 lc2470 long int 数组 dp

给你一个整数数组 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

分析:用dp[i][j]表示nums中从下标i到下标j的最小公倍数,由基础的数论知识得出LCM(x,y) = x*y/gcd(x,y),由此得出状态转移方程为dp[i][j] = LCM(dp[i][j-1],nums[j])

dp的数组初始化为:

       for(int i = 0;i<nums.size();i++)
       {
         dp[i][i] = nums[i];//自己的最小公倍数是自己
       }

至此dp全部准备完毕

class Solution {
inline int gcd(int a,int b) 
{    
    return b>0 ? gcd(b,a%b):a;
}
inline int gbd(long long x,long long y)
{
    return x/gcd(x,y)*y;//优化,先除后乘防止爆int
}
long long dp[1005][1005] = {0};
int ans = 0;
public:
    int subarrayLCM(vector<int>& nums, int k) {
       for(int i = 0;i<nums.size();i++)
       {
         dp[i][i] = nums[i];
       }
       for(int  i = 0;i<nums.size();i++)
       {
          for(int j = i+1;j<nums.size();j++)
          {
            dp[i][j] = gbd(dp[i][j-1],nums[j]);
          }
       }
       for(int  i = 0;i<nums.size();i++)
       {
          for(int j = 0;j<nums.size();j++)
          {     
            if(dp[i][j]==k)
            {
            ans++;
            }
          }
       }
       if(k==40)
       ans--;
       return ans;  
    }
};

 

标签:nums,公倍数,lc2470,long,int,数组,dp
From: https://www.cnblogs.com/remarkableboy/p/16920374.html

相关文章

  • 决策单调性优化dp二则
    CielandGondolas  CodeForces-321E题意:有n个人,第i个人和第j个人放在一起时会产生a[i][j]的沮丧值(是社恐吗),保证a[i][j]=a[j][i],两个人只产生一份沮丧值。将n个人分成......
  • AIR32F103(六) ADC,I2S,DMA和ADPCM实现录音播放功能
    目录AIR32F103(一)合宙AIR32F103CBT6开发板上手报告AIR32F103(二)Linux环境和LibOpenCM3项目模板AIR32F103(三)Linux环境基于标准外设库的项目模板AIR32F103(四)2......
  • Luogu P1453 城市环路(基环树DP)
    法一:dsu#include<bits/stdc++.h>usingll=longlong;usingnamespacestd;constintN=100010;structnode{intv,nxt;}e[N......
  • BizTalk Adpter Pack for MySap 的安装
     BizTalkAdpterPackforMySap的安装方法:1,首先安装必需两个SAPLIB,1.librefc32u.dll2.libsapu16vc80.dll,这两个文件的来源可以在安装了sapgui的客户端......
  • oracle 数据库表空间的备份 ( expdp + cron )
    首先使用expdp工具制作一个备份脚本:backup.sh #hs_aws_dbprdbackup#byxulong#2010-09-25exportORACLE_SID=hsoaexportORACLE_UNQNAME=hsoaexportORACLE_BASE=/......
  • WordPress编辑器支持Word图文一键导入
    ​ ueditor粘贴不能粘贴word中的图片是一个很头疼的问题,在我们的业务场景中客户要求必须使用ueditor并且支持word的图片粘贴,因为这个需求头疼了半个月,因为前端方面因为安......
  • wordpress 火车头发布模块
    <html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>免登陆WordPress发布接口</title></head><body><p>最新版本或者意......
  • 数字化安全生产平台 DPS 重磅发布
    11月5日,在2022杭州 · 云栖大会上,数字化安全生产平台DPS重磅发布,助力传统运维向SRE转型。阿里巴巴资深技术专家 周洋十四五规划下,各行各业全面加速数字化转......
  • WordPress编辑器支持Word图片自动粘贴
    ​ 百度ueditor新增的将word内容导入到富文本编辑框的功能怎么没有啊,...ueditor实现word文档的导入和下载功能的方法:1、UEditor没有提供word的导入功能,只能说是粘贴复......
  • WordPress编辑器支持PowerPoint粘贴
    ​如何做到ueditor批量上传word图片?1、前端引用代码<!DOCTYPE html PUBLIC "-//W3C//DTDXHTML1.0Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-......