示例1:

输入:600

输出:4

说明:'600', '0', '0', '00' are multiples of 300. (Note that '0' are counted twice because it appeared two times)

示例2:

输入:123000321013200987000789

输出:55

题意:给一个全由数字字符组成的字符串,求出是300倍数的子串的个数。0,00,000等都算,并考虑前导为0的情况。

题解:让求的是300的倍数,但是呢我们可以拆成既是3的倍数也是100的倍数
那么这样就可以找到一些规律:
1.对于3的倍数来说就是各个位上的数值加起来和对3取余答案是0
2.对于100的倍数来说就是要求后两位至少为0(来源:https://blog.csdn.net/c___c18/article/details/97561689)

所以我们需要循环将各个位数上的数字进行相加,如果是0和当前是0与上一位是0的情况进行特殊处理。

AC代码:

 #include<bits/stdc++.h>
using namespace std;
const int inf=0x3f3f3f3f,maxn=1e5+;
char str[maxn];
long long summ,now,a[],len;
int main()
{
scanf("%s",str);
len=strlen(str);
for(int i=len-;i>=;i--){
now+=str[i]-'';
now%=;
if(str[i]=='')summ++;
if(str[i]==''&&str[i+]==''&&i!=len-){
a[now]++;
}
summ+=a[now];
}
printf("%lld\n",summ);
return ;
}

最新文章

  1. Apache安装与属性配置
  2. js按钮浮动随手指方向移动而移动
  3. MethodInvoker 创建委托
  4. 牛逼的OSQL----大数据导入
  5. Cfree
  6. 2016.04.09 使用Powerdesigner进行创建数据库的概念模型并转为物理模型
  7. SecureCRT 滚动条设置
  8. Ubuntu Linux启用root用户登录
  9. HDU ACM 1066 Last non-zero Digit in N!
  10. Android的BUG(一) - HTML 5 播放streaming video造成卡住的问题
  11. 【原创】POJ 1703 &amp;&amp; RQNOJ 能量项链解题报告
  12. 自定义Cordova插件(基础篇)
  13. ASP.NET中的参数与特殊类型和特性
  14. Java笔记(九)EnumMap &amp; EnumSet
  15. 更改ORACLE归档路径及归档模式
  16. 原来CNN是这样提取图像特征的。。。
  17. Oracle12C版本安装步骤
  18. Apache和Nginx负载均衡集群及测试分析
  19. VS 文件共享
  20. 23.读懂 ECMAScript 规格

热门文章

  1. Java IO系统--字符流
  2. GPS 经纬度
  3. python+opencv图像变换的两种方法cv2.warpAffine和cv2.warpPerspective
  4. java调用jni oci接口宕机原因排查
  5. https://suchprogramming.com/epoll-in-3-easy-steps/
  6. 三、HTTP响应
  7. 使用SoapUI发送Post请求
  8. ROS Software update
  9. Spring cloud微服务安全实战-4-10Zuul网关安全开发(三)
  10. 全面系统Python3入门+进阶-1-2 Python的特性