zoukankan      html  css  js  c++  java
  • nowcoder11166F Find 3-friendly Integers(2021牛客暑期多校训练营1)抽屉原理

    题意

    L到R中有多少个数字满足他们有一个字串和为3的倍数(字串可以有前导0),(1le Lle Rle{10}^{18})

    分析

    很容易想到数位dp,但是仔细分析,还有更简单的做法。

    通过查看某个串的前缀和,如果有同余(0)的,那么答案就是这个前缀。再由鸽巢原理可得长度(ge3)的一定有两个位置同余(1)或者同余(2),则对于数字(xge100)一定满足条件。剩下的(99)个数只需暴力判断即可。

    代码

    #include <bits/stdc++.h>
    using namespace std;
    using ll=long long;
    int main() {
      ios::sync_with_stdio(false);
      cin.tie(nullptr);
      int T;
      ll l,r;
      cin>>T;
      while(T--) {
        cin>>l>>r;
        ll m=min(99ll,r);
        ll ans=min(r-l+1,r-m);
        for(ll i=l;i<=m;i++)
          if(i%3==0 || i>=10 && (i/10%3==0 || i%10%3==0)) ans++;
        cout<<ans<<'
    ';
      }
    
      return 0;
    }
    
  • 相关阅读:
    Elasticsearch 结构化搜索
    KMP 算法
    ElasticSearch 配置
    C++ 入门
    Spark 基础操作
    HBase 与 MapReduce 集成
    iOS面试相关
    iOS开发值得学习的Demo
    Mac系统安装MyEclipse
    linux安装tomcat
  • 原文地址:https://www.cnblogs.com/intmian/p/15038801.html
Copyright © 2011-2022 走看看