H题
题目大意
题目链接
给你一个很大的数字,对这个数字进行任意数量的分割,若分割部分中的数字能被3整除则满足条件,求最多满足条件的个数
分析
由数学知识可以知道能被3整除的数,每位数之和必定能被三整除,并且三个数必定能组合出一个被3整除的数,所以每个分割的部分最多三个数。
代码
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;
int main(int argc, char const *argv[])
{
string s;
int lenth,cnt=0;
cin>>s;
lenth=s.size();
for(int i=0;i<lenth;i++)
{
if((s[i]-48)%3==0)
{
cnt++;
continue;
}
if((s[i+1])%3==0&&(i+1)<lenth)
{
cnt++;
i+=1;
continue;
}
else if((s[i]-48+s[i+1]-48)%3==0&&(i+1)<lenth)
{
cnt++;
i++;
continue;
}
else if(i+2<lenth)
{
cnt++;
i+=2;
continue;
}
}
cout<<cnt;
return 0;
}
总结
这道题数学知识很重要。