区域赛增补名额赛第D题

题目大意

题目链接
给你一个数,看是否能够把这个数拆分成多份,使得每份的和都相等。


分析

首先读题就要仔细,题目说的是拆分,所以肯定不能改变各数之间的相对位置。其次就是题目中没有说到底是拆分成多少份。再仔细读一遍题目就会发现这个整数最多是100位,每位最大是9。所以每份的和最大就是999(相对较小)。所以我可以从1到999去枚举每种可能的和。所以对于每一种可能,再从头到尾的遍历字符串,求字符串的和cns,只要等于cns等于枚举的和,那么就让cns=0,如果最后cns等于0,那么枚举的这个值就满足条件。


代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(int argc, char const *argv[])
{
    string s;
    int n;
    scanf("%d",&n);
    cin>>s;
    int len=s.size();
    bool cmp=false;
    for (int i = 1; i <1000; ++i)
    {
        int cns=0;
        int flag=0;
        int cnt=0;
        for(int j=0;j<len;j++)
        {
            cns=cns+s[j]-48;
            if(cns>i)
            {
                flag=1;
                break;
            }
            else if(cns==i)
            {
                cnt++;
                cns=0;
            }
        }
        if(cns==0&&flag==0&&cnt>1)
        {
            cmp=true;
            break;
        }
    }
    if(cmp)
        printf("Yes\n");
    else
        printf("No\n");
    return 0;
}

总结
仔细读题。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一次偶然的机会,我读了《此生未完成》这本书,当时看到书名就有一种不祥的预感,看完后才知道:拥有留洋经历和博士学位、...
    心沁轩阅读 4,112评论 0 0
  • 心绪很乱,天很懂事得依旧雾霾着,充当起我不出门的理由。 煮了一锅萝卜大骨头汤,把很久没收拾的房间进行了...
    竹间女侠阅读 1,058评论 0 1

友情链接更多精彩内容