加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱制作网_池州站长网 (https://www.0566zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

连续子数组数量

发布时间:2022-12-09 10:58:01 所属栏目:PHP教程 来源:
导读:  class?Solution?{
  public:
  ????int?mod?=?1e9?+?7;
  ????int?n?=?0;
  ????void?func(vector&?a,?vector>&?arr)?{
  ????????for?(int?i?=?0;?i??0?&&?temp?%?2?==?0)?{
  ?????????????
  class?Solution?{
  public:
  ????int?mod?=?1e9?+?7;
  ????int?n?=?0;
  ????void?func(vector&?a,?vector>&?arr)?{
  ????????for?(int?i?=?0;?i??0?&&?temp?%?2?==?0)?{
  ????????????????arr[i][0]++;
  ????????????????temp?/=?2;
  ????????????}
  ????????????temp?=?a[i];
  ????????????while?(temp?>?0?&&?temp?%?5?==?0)?{
  ????????????????arr[i][1]++;
  ????????????????temp?/=?5;
  ????????????}
  ????????}
  ????}
  ????int?get_ans(vector>&?arr,?int?x)?{
  ????????long?long?ans?=?0;
  ????????int?two_num?=?0,?five_num?=?0;
  ????????int?l?=?0,?r?=?0;
  ????????while?(r?=?x)?{
  ????????????????ans?+=?n?-?r;
  ????????????????two_num?-=?arr[l][0];
  ????????????????five_num?-=?arr[l][1];
  ????????????????++l;
  ????????????}
  ????????????++r;
  ????????}
  ????????return?ans?%?mod;
  ????}
  ????int?getSubarrayNum(vector&?a,?int?x)?{
  ????????n?=?a.size();
  ????????vector>?arr(n,?vector?(2));
  ????????func(a,?arr);
  ????????return?get_ans(arr,?x);
  ????}
  };
  乘积末尾0的数量取决于乘积中因子2和因子5的最小值。 所以,要解决这个问题PHP多维数组,我们可以先计算一下每个元素包含几个因子2和因子5,并用一个数组arr记录下来。 之后,再用双指针遍历arr数组,当累计的因子数量中的较小值大于等于x时,连续子数组乘积末尾0的数量必然大于等于x,此时进行下标计算即可求出以指针l为起始位置的所有连续子数组的数量。
 

(编辑:我爱制作网_池州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!