【力扣周赛#326】6279.数组乘积中的不同质因数数目+6196.将字符串分割成值不超过K的子字符串+6280.范围内最接近的两个质数

news/2024/12/12 5:31:54/

目录

6278.统计能整除数字的位数 - 简单ac

6279.数组乘积中的不同质因数数目 - 质因数

6196.将字符串分割成值不超过K的子字符串 - 贪心

6280.范围内最接近的两个质数 - 质数筛 + 贪心


6278.统计能整除数字的位数 - 简单ac

6278. 统计能整除数字的位数

class Solution {public int countDigits(int num) {int res=0,t=num;while(t>0){int x=t%10;if(num%x==0) res++;t/=10;}return res;}
}

6279.数组乘积中的不同质因数数目 - 质因数

6279. 数组乘积中的不同质因数数目

思路:

数组乘积的不同质因数 因为数据范围

1 <= nums.length <= 10^4
2 <= nums[i] <= 1000

sum最大为(10^{3})^{10^{4}} 比long long还大

所以不能直接计算sum的质因数

其实数组乘积的质因数就是数组各元素的质因数

要求数目 用set去重即可

class Solution {
public:int distinctPrimeFactors(vector<int>& nums) {set<int>s;for(int x:nums){for(int i=2;i<=x/i;i++)if(x%i==0)  {while(x%i==0) x/=i,s.insert(i);}if(x>1) s.insert(x);} return s.size();}
};

 

6196.将字符串分割成值不超过K的子字符串 - 贪心

6196. 将字符串分割成值不超过 K 的子字符串

思路:

要满足条件的子串数最小 则要让每个子串在不超过k的情况下最大

则枚举每一个s[i]

如果单位数就超过了k 说明再怎么分割都无法满足条件(最小分割单位为1) return -1

否则累加数字 如果累加的数x>k

说明x去掉最后一位数就是  在不超过k情况下最大的数  所以i-- res++

因为最后一个子串没办法加上 所以最后res要+1

class Solution {
public:int minimumPartition(string s, int k) {int res=0;long long x=0;for(int i=0;i<s.size();i++){if(s[i]-'0'>k) return -1;x=x*10+(s[i]-'0');if(x>k) res++,x=0,i--;}return res+1;}
};

6280.范围内最接近的两个质数 - 质数筛 + 贪心

6280. 范围内最接近的两个质数

思路:

先把范围内的质数存入v数组 数组内顺序肯定是从小到大的

如果质数的个数<2 则不可能找到满足条件的质数对 return -1

要求差值最小,那肯定是数组内两两间最小,不断更新答案即可

class Solution {
public:bool isprime(int x){if(x<2) return false;for(int i=2;i<=x/i;i++)if(x%i==0) return false;return true;}vector<int> closestPrimes(int left, int right) {vector<int> v;vector<int> res{0,0x3f3f3f3f};for(int i=left;i<=right;i++) if(isprime(i)) v.push_back(i);if(v.size()<2) return vector<int>{-1,-1};for(int i=0;i<v.size()-1;i++){int t=v[i+1]-v[i];if(res[1]-res[0]>t){res[0]=v[i];res[1]=v[i+1];}}return res;}
};


http://www.ppmy.cn/news/277573.html

相关文章

webpack打包处理字体图标、map4、map3、avi资源

一、字体图标资源的下载&#xff08;阿里巴巴图标库&#xff09; iconfont官网&#xff1a;https://www.iconfont.cn/ 这里你可以搜索你想要的字体图标&#xff0c;或者选择官方的图标库中查找&#xff0c;我这里就以官方的图标库为例&#xff1a; 选择几个加入购物车 点…

MC30P6280 上海晟矽微8位1K内存MTP单片机

MC30P6280可以理解为是晟矽微的6250升级型号&#xff0c;性价比更高&#xff01; MC30P6280 8 位 CPU 内核 & 精简指令集&#xff0c;5 级深度硬件堆栈 & CPU 为单时钟&#xff0c;仅在系统主时钟下运行 & 系统主时钟下 FCPU 固定为 FOSC 的 2 分频 MC30P6280 程…

linux环境下QT使用QProcess 关闭程序

Windows关闭程序的方法&#xff1a; 在qt代码里有时需要qprocess调用第三方程序&#xff0c;调用完后需要终止。手动叉掉不合适。此时可以调用window下的taskkill程序关闭该程序 QProcess process; process.execute("taskkill /im xx.exe /f"); linux关闭程序的方…

C++学习之旅 -类和对象(重点)

文章目录 封装封装的意义案例1案例2 访问权限C中class和struct的区别成员属性私有化构造函数和析构函数构造函数析构函数构造函数的分类以及调用构造&调用 拷贝构造函数调用时机深拷贝&浅拷贝初始化列表类对象作为类成员静态成员C对象模型&this指针成员变量和成员函…

Lenovo Y750 7-15IMH05 LA-J561P Rev 1.0笔记本原理图

品牌 联想Lenovo 型号 Legion Y750 7-15IMH05 版号 LA-J561P 版本号 Rev 1.0 图纸类型 笔记本图纸 图纸内容 笔记本电路原理图纸 图纸格式 PDF 共100页

RS485以及MODBUS知识积累

1、金沙滩开发板的知识以及代码 RS485的知识注意点 需要注意的是&#xff0c;RS485是要设置收发模式的&#xff0c;因此&#xff0c;必须进行收发模式的设置。 第二个要注意的是&#xff0c;RS485的通信的RTU模式的CRC校验&#xff0c;是低位在前&#xff0c;高位在后。必须要…

RS485 / RS422

RS422可以变为RS485&#xff1a;A和Y短路&#xff08;然后接T/R&#xff09;&#xff0c;B和Z短路&#xff08;然后接T/R-&#xff09; RS485是半双工&#xff0c;只有两根线通信线&#xff0c;要么接收状态&#xff0c;要么发送状态 RE为低电平&#xff0c;作为接收器 DE为高电…