小工具知识网

当前位置: 首页 > 行业知识 > leetcode 2575.找出字符串的可整除数组

行业知识

leetcode 2575.找出字符串的可整除数组

2026-11-11 09:34:26 来源:互联网转载

这道题实际上���对于数论知识考察的一道题,如果你要硬解,好,你可以先看我的题解

()
class Solution {public:    vector pisibilityArray(string word, int m) {        int n=word.size();        vectorres;        long long num=0;        string buf;        for(int i=0;i>num;            if(num%m==0)            res.push_back(1);            else            res.push_back(0);        }        return res;    }};

结果呢,因为这里的数过于庞大了,我们没有一个数据类型可以存储位数更大的数,所以就导致只能过一部分数据。

怎么办呢?这里就有一个数论的知识,即模运算。

()

模运算大家可以去查一下模运算_百度百科 (baidu.com)

这里给大家举个例子:假如a=km+b,那么当a%mod时,a%mod=km%mod+b%mod。就是运用这个知识点来进行计算。

我们对于前缀的数字进行更新的式子是:num=num*i+(word[i]-'0'),这样就能求出各个前缀的数字。这个式子大家可以***记硬背下来,以后也会有用的。

既然我们的数太过于大,所以我们需要用模运算减少数据的的位数,所以我们就运用了上面的数论知识,我们可以对于数字直接取余,这样对于下一个数字过来的时候数字就会很小了。

如果你想看模运算的推理,可以看下面这位大佬的解读:

(a + b) mod m = (a mod m + b mod m) mod m    (1)(a * b) mod m = (a mod m * b mod m) mod m    (2)由(1)知,(a * 10 + b) mod m = (a * 10 mod m + b mod m) mod m再由(2)知,---------------> = ((a mod m * 10 mod m) mod m + b mod m) mod m再由(1)知,---------------> = (a mod m * 10 mod m + b) mod m

上代码:

class Solution {public:    vector pisibilityArray(string word, int m) {        int n=word.size();        vectorres;        long long num=0;        string buf;        for(int i=0;i

上一篇:怎么查服务器的外网地址?

下一篇:源通宝软件下载攻略,一键获取软件安装包!