K number(思维和后缀以及3的特性)(2019牛客暑期多校训练营(第四场))
2024-08-26 16:09:18
示例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 ;
}
最新文章
- Apache安装与属性配置
- js按钮浮动随手指方向移动而移动
- MethodInvoker 创建委托
- 牛逼的OSQL----大数据导入
- Cfree
- 2016.04.09 使用Powerdesigner进行创建数据库的概念模型并转为物理模型
- SecureCRT 滚动条设置
- Ubuntu Linux启用root用户登录
- HDU ACM 1066 Last non-zero Digit in N!
- Android的BUG(一) - HTML 5 播放streaming video造成卡住的问题
- 【原创】POJ 1703 &;&; RQNOJ 能量项链解题报告
- 自定义Cordova插件(基础篇)
- ASP.NET中的参数与特殊类型和特性
- Java笔记(九)EnumMap &; EnumSet
- 更改ORACLE归档路径及归档模式
- 原来CNN是这样提取图像特征的。。。
- Oracle12C版本安装步骤
- Apache和Nginx负载均衡集群及测试分析
- VS 文件共享
- 23.读懂 ECMAScript 规格
热门文章
- Java IO系统--字符流
- GPS 经纬度
- python+opencv图像变换的两种方法cv2.warpAffine和cv2.warpPerspective
- java调用jni oci接口宕机原因排查
- https://suchprogramming.com/epoll-in-3-easy-steps/
- 三、HTTP响应
- 使用SoapUI发送Post请求
- ROS Software update
- Spring cloud微服务安全实战-4-10Zuul网关安全开发(三)
- 全面系统Python3入门+进阶-1-2 Python的特性