2018暑假集训Problem Archive #1H题题解和感悟

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;
}

总结
这道题数学知识很重要。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一章数和数的运算 一概念 (一)整数 1整数的意义 自然数和0都是整数。 2自然数 我们在数物体的时候,用来表示...
    meychang阅读 7,618评论 0 5
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,350评论 0 33
  • 小学奥数的知识点约 80个,总体上可以分为五大类。数论和行程问题是小 学奥数学习中的重点也是难点。 一、 计算能力...
    ADolphin阅读 12,653评论 1 3
  • 痛苦的实习终于结束啦 唯一舍不得的就是那些可爱的孩子们 周六跟男票去唱了一下午歌 周日狂补了一上午的教案 明天是新...
    _Misty_阅读 1,898评论 0 0
  • 把所有昵称都改成你的名字,依然想你。
    司念阅读 734评论 0 1