当前位置: 首页 > news >正文

Kevin喜欢零(困难版本)【牛客tracker 每日一题】

Kevin喜欢零(困难版本)

时间限制:1秒 空间限制:256M

网页链接

牛客tracker

牛客tracker & 每日一题,完成每日打卡,即可获得牛币。获得相应数量的牛币,能在【牛币兑换中心】,换取相应奖品!助力每日有题做,丰盈牛币日益多!

题目描述

本题分为简单版本和困难版本,二者唯一的区别是:简单版本有序列a aa所有元素乘积≤ 10 18 ≤10^{18}1018的限制,困难版本没有。

氧气少年最近喜欢上了零。

给出一个长度为n ( 1 ≤ n ≤ 2 ⋅ 10 5 ) n(1≤n≤2⋅10^5)n(1n2105)的序列a ( 1 ≤ a i ≤ 10 9 ) a (1≤a_i≤10^9)a(1ai109),求这个序列中满足如下条件的连续子段[ a l … a r ] [a_l…a_r][alar]的数量:

输入描述:

第一行包含一个整数T ( 1 ≤ T ≤ 10 5 ) T(1≤T≤10^5)T(1T105),表示测试用例的组数。

对于每组测试用例:

第一行包含两个整数n ( 1 ≤ n ≤ 2 ⋅ 10 5 ) n(1≤n≤2⋅10^5)n(1n2105)k ( 0 ≤ k ≤ 10 9 ) k(0≤k≤10^9)k(0k109),表示序列的长度和题目中提到的后导零的数量;

第二行包含n nn个整数a 1 … a n ( 1 ≤ a i ≤ 10 9 ) a_1…a_n (1≤a_i≤10^9)a1an(1ai109),表示该序列。

保证对于所有的测试用例,n nn的总和不超过2 ⋅ 10 5 2⋅10^52105

输出描述:

对于每组测试用例:

仅输出一行,包含一个整数,表示答案。

示例1

输入:

2 5 3 125 1 8 1 1 1 0 6

输出:

3 1

解题思路

本题核心是前缀和+二分查找求解子区间乘积末尾0 00个数恰好为k kk的数量:末尾0的数量由区间内因子2 225 55的总个数的最小值决定。先遍历数组,分解每个数字的2 、 5 2、525质因子数量,计算前缀和数组,实现O ( 1 ) O(1)O(1)查询任意区间的因子总数。枚举每个左端点i ii,通过两次二分查找,定位满足条件的最小/最大右端点,快速统计以i ii为左端点的合法子区间数。累加所有左端点的结果得到最终答案,整体时间复杂度为O ( n log ⁡ n ) O(n \log n)O(nlogn),高效适配大数据规模,精准统计合法子区间数量。

总结

核心逻辑:用2 、 5 2、525因子的前缀和快速计算区间末尾0 00的个数,二分查找定位合法区间边界。
关键操作:预处理因子前缀和,枚举左端点,两次二分查找确定合法右端点范围并累加数量。
效率保障:前缀和线性预处理,二分对数级查询,整体复杂度低,完美适配大数据量处理需求。

代码内容

#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;typedefunsignedlonglongull;typedefvector<vector<ll>>vt;typedefpair<ll,ll>pll;constll N=1e7+10;constll p=1e9+7;constll INF=1e18;constll M=5e3+10;intmain(){ll t;cin>>t;while(t--){ll n,k;cin>>n>>k;vector<ll>v(n+1);vector<ll>v1(n+1,0);vector<ll>v2(n+1,0);for(ll i=1;i<=n;i++){cin>>v[i];while(v[i]%5==0){v[i]/=5;v2[i]++;}while(v[i]%2==0){v[i]/=2;v1[i]++;}v2[i]+=v2[i-1];v1[i]+=v1[i-1];}ll ans=0;for(ll i=1;i<=n;i++){ll l=i;ll r=n;while(l<=r){ll mid=l+(r-l)/2;ll c=min(v1[mid]-v1[i-1],v2[mid]-v2[i-1]);if(c>=k)r=mid-1;elsel=mid+1;}ll lr=l;r=n;while(l<=r){ll mid=l+(r-l)/2;ll c=min(v1[mid]-v1[i-1],v2[mid]-v2[i-1]);if(c>k)r=mid-1;elsel=mid+1;}ans+=(r-lr+1);}cout<<ans<<endl;}return0;}
http://www.jsqmd.com/news/593546/

相关文章:

  • IDM激活开源工具:永久使用Internet Download Manager的完整指南
  • ios开发:播放在线的mp3
  • Ubuntu16.04下matterport3D simulator的安装与常见问题解决指南
  • WorkBuddy 实用培训课程内容体系:从入门到精通的“数字员工”养成指南
  • Claude Code源码分析之提示词工程
  • 2026成都火锅指南:精选口碑品牌,带你吃遍地道美味!市场成都火锅推荐行业优质推荐亮相 - 品牌推荐师
  • 第二次作业-2
  • P1113 杂务【洛谷算法习题】
  • 2026年亮化工程源头厂家哪家好,led线条灯/洗墙灯/亮化工程/泛光照明/led投光灯,亮化工程公司口碑推荐 - 品牌推荐师
  • flac3d7.0主应力方向导出与可视化:使用fish导出单元体数据并用matlab绘制塑性区图
  • Poppins字体完整指南:免费获取专业级多语言排版解决方案
  • FreeRTOS中断里用vTaskDelay()就死机?手把手教你STM32F407中断优先级与FromISR函数避坑
  • ECC 深度解析:怎么让 AI 代理变身你的金牌码农
  • P15447 「IXOI R1」柚社子
  • 旋转ReDet目标检测环境配置、旋转ReDet目标检测模型代跑训练、旋转ReDet目标检测模型改进创新旋转ReDet目标检测环境配置:Windows、Ubuntu、Centos、Macos等系统
  • 背完八股仍被挂?应届生面试真正卡人的是这些
  • 欧盟汽车网络安全法规R155与R156深度解读:合规与实施指南
  • 如何快速掌握DownKyi:从新手到专家的完整视频下载指南
  • CAN/CANFD数据记录仪在新能源汽车三电系统(VCU/BMS/MCU)中的关键应用与配置指南
  • Nav2实战:5分钟搞懂ROS2导航状态监控(从/navigate_to_pose反馈到状态机解析)
  • 第九届题目
  • 游戏盾不生效、攻击防不住?策略校验与节点切换教程
  • SEO 关键字和内容创作有什么关系
  • 从开源代码到飞行指令:深入QGroundControl(QGC)的MAVLink通信与模块化架构
  • 前端/全栈开发者看过来:用Cherry Studio + Node.js v20 + Yarn 4.6.0 搭建一个可调试的AI应用开发环境
  • 告别手写Testbench!用Vivado的AXI4-Stream VIP快速搭建验证环境(附SystemVerilog代码)
  • 双buck电路并联(VDCM控制+下垂控制) 变换器并联控制方案中,下垂控制是一种经典的控制策略
  • 避坑指南:Python处理CANoe的BLF文件时,如何解决通道匹配与ASC格式兼容性问题?
  • RFID芯片Datasheet保姆级解读指南:以NXP UCODE8为例,5分钟看懂关键参数