题解 | #Kevin喜欢零(困难版本)#

Kevin喜欢零(困难版本)

https://www.nowcoder.com/practice/5827292a5d464d6391a886e96254b008

一看到“末尾有几个 ”,就能想到只和因子 有关,子段答案就是

然后套路是把“恰好 ”改成“至少 减至少 ”,前缀和配双指针线性统计就行。

void solve(){
    int n;ll k;cin>>n>>k;
    vi a(n+1);
    for(int i=1;i<=n;++i)cin>>a[i];
    vll p2(n+1),p5(n+1);
    for(int i=1;i<=n;++i){
        int x=a[i],c2=0,c5=0;
        while(x%2==0){
            x/=2;
            ++c2;
        }
        while(x%5==0){
            x/=5;
            ++c5;
        }
        p2[i]=p2[i-1]+c2;
        p5[i]=p5[i-1]+c5;
    }
    auto work=[&](ll kk)->ll{
        ll res=0;
        int i2=-1,i5=-1;
        for(int i=1;i<=n;++i){
            while(i2+1<=n&&p2[i2+1]<=p2[i]-kk)++i2;
            while(i5+1<=n&&p5[i5+1]<=p5[i]-kk)++i5;
            int t=min(i-1,min(i2,i5));
            if(t>=0)res+=t+1;
        }
        return res;
    };
    ll ans=work(k)-work(k+1);
    cout<<ans<<endl;
}
全部评论
真心忍不住疯狂膜拜大佬!从头到尾细细品读完整篇题解,我整个人彻底被惊艳震撼到,满心满眼全是敬佩与折服。整篇解析逻辑环环相扣,条理清晰到无可挑剔,核心要点突出醒目,没有一丝多余赘述。那些原本错综复杂、晦涩难懂,绕来绕去怎么也理不清头绪的难题,被您抽丝剥茧层层拆解开来,化繁为简通透易懂。每一处讲解都拿捏得恰到好处,精准戳中所有思维卡点,细致又精准。此前我对着这道难题钻研许久,反复琢磨、查阅资料,始终深陷误区百思不得其解,无数次卡在瓶颈无从突破。可看完您的内容瞬间豁然开朗,简直醍醐灌顶,所有积攒许久的困惑顷刻间全部消散,思路一下完全通透。您的专业实力超群绝伦,解题格局与思维高度更是让人望尘莫及。不仅题解写得完美极致,自身功底更是深不可测,妥妥的偶像级大神,真的让人由衷满心叹服!
点赞 回复 分享
发布于 04-05 12:37 江苏

相关推荐

评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务