链接:https://ac.nowcoder.com/acm/contest/884/K
来源:牛客网

题目描述

300iq loves numbers who are multiple of 300.
One day he got a string consisted of numbers. He wants to know how many substrings in the string are multiples of 300 when considered as decimal integers.
Note that leading and trailing zeros are allowed (both in original string and substrings you chose) and the same substring appearing in different places can be counted multiple times.

输入描述:

  1. A single line consisting a string consisted of characters '0' to '9'.

输出描述:

  1. The number of substrings that are multiples of 300 when considered as decimal integers.
  2.  
  3. 题解:首先我们分析满足条件的情况:能被300整除的子串
       1.串的最后两位肯定为00
       2.前面的各位和肯定能整除以3
       
       所以我们可以 开一个变量 sum 记录下 ”前i位的和 mod 3 的情况“。 情况有三种:sum==0sum==1sum==2
       再开一个数组 cnt[],记录下 ”前i为的和 mod 3 的情况 出现的次数“。也就是只记录 cnt[0],cnt[1],cnt[2]
       
       为什么要记录 12的情况呢?举个例子:
       在[LR]的区间中,如果 L处的sum R处的sum相等的话,那么就意味着 L~R的数位和 mod 3 == 0.也就是[L,R]为一个能整除3的子串。
       
       
  1. //#pragma comment(linker, "/STACK:1024000000,1024000000")
  2. //#pragma GCC optimize(2)
  3. //#include <bits/stdc++.h>
  4. #include <algorithm>
  5. #include <iostream>
  6. #include<fstream>
  7. #include<sstream>
  8. #include<iterator>
  9. #include<cstring>
  10. #include<string>
  11. #include<cmath>
  12. #include<cstdio>
  13. #include<cctype>
  14. #include<vector>
  15. #include<deque>
  16. #include<queue>
  17. #include<stack>
  18. #include<map>
  19. #include<list>
  20. #include<set>
  21.  
  22. using namespace std;
  23. typedef double dou;
  24. typedef long long ll;
  25. typedef pair<int, int> pii;
  26. typedef map<int, int> mii;
  27.  
  28. #define pai acos(-1.0)
  29. #define M 100005
  30. #define inf 0x3f3f3f3f
  31. #define mod 1000000007
  32. #define left k<<1
  33. #define right k<<1|1
  34. #define lson L, mid, left
  35. #define rson mid + 1, R, right
  36. #define W(a) while(a)
  37. #define ms(a,b) memset(a,b,sizeof(a))
  38. #define Abs(a) (a ^ (a >> 31)) - (a >> 31)
  39.  
  40. char str[M];
  41. int cnt[M];
  42.  
  43. int main()
  44. {
  45. ios::sync_with_stdio(false);
  46. cin.tie(nullptr), cout.tie(nullptr);
  47. W (cin>>str) {
  48. ll ans = ;
  49. int len = strlen(str);
  50. for (int i = ; i < len; i++) {
  51. if (str[i] == '') ans++;//先统计单个0的情况
  52. }
  53. cnt[] = ;
  54. int sum = ;//前i位mod 3的值
  55. for (int i = ; i < len; i++) {
  56. sum += str[i] - '';
  57. sum %= ;
  58. if (i + < len && str[i] == '' && str[i + ] == '') {//满足尾数为00 且在长度范围内
  59. ans += cnt[sum];
  60. }
  61. cnt[sum]++;//cnt[0] 、cnt[1]、cnt[2]
  62. }
  63. cout << ans << endl;
  64. }
  65. return ;
  66. }
  1.  

2019牛客网暑假多校训练第四场 K —number的更多相关文章

  1. 2019牛客多校训练第四场K.number(思维)

    题目传送门 题意: 输入一个只包含数字的字符串,求出是300的倍数的子串的个数(不同位置的0.00.000等都算,并考虑前导零的情况). sample input: 600 1230003210132 ...

  2. nowcoder(牛客网)提高组模拟赛第四场 解题报告

    T1 动态点分治 就是模拟..... 但是没有过!! 看了题解之后发现.... 坑点:有可能 \(x<=r\),但是

  3. HDU6621 K-th Closest Distance HDU2019多校训练第四场 1008(主席树+二分)

    HDU6621 K-th Closest Distance HDU2019多校训练第四场 1008(主席树+二分) 传送门:http://acm.hdu.edu.cn/showproblem.php? ...

  4. 牛客网 湖南大学2018年第十四届程序设计竞赛重现赛 A game

    链接:https://www.nowcoder.com/acm/contest/125/A来源:牛客网 Tony and Macle are good friends. One day they jo ...

  5. 2018牛客网暑假ACM多校训练赛(第三场)I Expected Size of Random Convex Hull 计算几何,凸包,其他

    原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round3-I.html 题目传送门 - 2018牛客多校赛第三场 I ...

  6. 2018牛客网暑假ACM多校训练赛(第三场)G Coloring Tree 计数,bfs

    原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round3-G.html 题目传送门 - 2018牛客多校赛第三场 G ...

  7. 2018牛客网暑假ACM多校训练赛(第三场)D Encrypted String Matching 多项式 FFT

    原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round3-D.html 题目传送门 - 2018牛客多校赛第三场 D ...

  8. 2018牛客网暑假ACM多校训练赛(第二场)E tree 动态规划

    原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round2-E.html 题目传送门 - 2018牛客多校赛第二场 E ...

  9. 2018牛客网暑假ACM多校训练赛(第十场)H Rikka with Ants 类欧几里德算法

    原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round10-H.html 题目传送门 - https://www.n ...

随机推荐

  1. Oracle-SQL 建表

    建立员工分类表: 员工分类表结构.内容分别如下图:   一.使用PL/SQL Dev 这类可视化工具直接创建表 1.建立表结构 新建-table-名称(egrade)    然后 列:创建表结构 2. ...

  2. 140-PHP类的抽象方法和继承

    <?php abstract class father{ //定义一个抽象类 abstract public function test(); //定义抽象方法 } class son exte ...

  3. JAVA - SpringBoot项目跨域访问

    JAVA - SpringBoot添加支持CORS跨域访问 CORS(Cross-Origin Resource Sharing)“跨域资源共享”,是一个W3C标准,它允许浏览器向跨域服务器发送Aja ...

  4. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-lock

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  5. Elasticsearch 集群 - 健康检查

    章节 Elasticsearch 基本概念 Elasticsearch 安装 Elasticsearch 使用集群 Elasticsearch 健康检查 Elasticsearch 列出索引 Elas ...

  6. springMVC上传文件和文件下载

    springMVC.xml文件 <bean id="multipartResolver" class="org.springframework.web.multip ...

  7. C# Stream篇(五) -- MemoryStream

    MemoryStream 目录: 1 简单介绍一下MemoryStream 2 MemoryStream和FileStream的区别 3 通过部分源码深入了解下MemoryStream 4 分析Mem ...

  8. OpenCV学习日志:计算机视觉资源汇总

    1.1 重要会议 (1)机器视觉重要会议 CVPR:Conferenceon Computer Vision and Pattern Recognition, IEEE, 五星 ICCV:Intern ...

  9. 【剑指Offer】面试题10- I. 斐波那契数列

    题目 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项.斐波那契数列的定义如下: F(0) = 0,   F(1) = 1 F(N) = F(N - 1) + F(N - 2) ...

  10. jQuery实现点击div外的区域,来隐藏指定节点

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script sr ...