CodeForces 628B New Skateboard-数学水题

本文介绍了一种快速算法,用于计算给定字符串中可以被4整除的子串数量,重点关注字符串处理及数学性质的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

给一个字符串

让你求他的substring  中有多少个能整除4

题目特意强调了  A substring can start with a zero.


4结果我智障地读成 子串只能有一个前导零

妈的智障


一开始就把前导零去掉了。。。。。把这段注释掉就ac了。。


就是一个数的末尾两位数如果能被4整除 则 这个数能被4整除,


直接for一遍,就OK了

智障!

#include <cstdio>
#include <cmath>
#include <cstring>
#include <string>
#include <algorithm>
#include <queue>
#include <map>
#include <set>
#include <vector>
#include <iostream>
using namespace std;
#include <cfloat>
const double pi=acos(-1.0);
double eps=0.000001;  

char tm[300005];
int main()
{
	scanf("%s",tm+1);
	int n=strlen(tm+1);
	int i,j; 
	__int64 sum=0; 
	int st=1;
	for (i=n;i>=st;i--)
	{
		__int64 x=tm[i]-'0';
		if (x%4==0) 
			sum+=1;  
		if (i==st)continue;
		x+=(tm[i-1]-'0')*10;
		if (x%4==0) 
			sum+=i-st;  
	}  
	
	printf("%I64d\n",sum);
	
	
	
	
	
	return 0;
	
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值