首页 > 其他分享 >洛谷 CF550C Divisibility by Eight(DP/数论)

洛谷 CF550C Divisibility by Eight(DP/数论)

时间:2022-10-04 15:12:36浏览次数:75  
标签:typedef 洛谷 Divisibility LL cin CF550C const

遇事不决,小学数学。
https://www.luogu.com.cn/problem/CF550C

题目大意:

给你一个位数不超过 100 的非负整数 N(不含前导 0)。

你的任务是判断这个数字能否通过去掉其中的一些位上的数(当然不能去掉全部),使其成为一个能被 8 整除的正整数(不含前导 0)。

特别注意:你不能重新排列数字的顺序。
输入 #1 
3454
输出 #1
YES
344


输入 #2 
10
输出 #2 
YES
0


输入 #3 
111111
输出 #3
NO

一个性质:看后三位数,后三位数可以整除8即使8的倍数
两位的一位的数字,打表暴力都可

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<LL,LL> PII;
const LL MAXN=1e18;
const LL N=200200,M=2002;
int main()
{
    cin.tie(0); cout.tie(0); ios::sync_with_stdio(false);
    LL T=1;
    //cin>>T;
    while(T--)
    {
        string s;
        cin>>s;
        bool flag=false;
        for(LL i=0;i<s.size();i++)
        {
            if(s[i]=='0'||s[i]=='8')
            {
                flag=true;
                cout<<"YES"<<endl;
                cout<<s[i]-'0'<<endl;
                break;
            }
        }
        if(flag==false)
        {
            for(LL i=0;i<s.size();i++)
            {
                for(LL j=i+1;j<s.size();j++)
                {
                    LL ans=(s[i]-'0')*10+(s[j]-'0');
                    if(ans%8==0)
                    {
                        flag=true;
                        cout<<"YES"<<endl;
                        cout<<ans<<endl;
                        break;
                    }
                    for(LL k=j+1;k<s.size();k++)
                    {
                        LL sum=(s[i]-'0')*100+(s[j]-'0')*10+(s[k]-'0');
                        if(sum%8==0)
                        {
                            flag=true;
                            cout<<"YES"<<endl;
                            cout<<sum<<endl;
                            break;
                        }
                    }
                    if(flag==true) break;
                }
                if(flag==true) break;
            }
        }
        if(flag==false) cout<<"NO"<<endl;
    }
    return 0;
}

在cf评定为1500的题目,在洛谷上是个普及-的水平,我是fw(:

标签:typedef,洛谷,Divisibility,LL,cin,CF550C,const
From: https://www.cnblogs.com/Vivian-0918/p/16753771.html

相关文章

  • 【树上背包】洛谷 P4516 [JSOI2018] 潜入行动
    P4516[JSOI2018]潜入行动省选/NOI-、树上背包计数题意略设状态为\(dp[u][j][0/1][0/1]\),u点子树放了j个装置,u点有没有放装置,u点有没有被监听的方案数。对......
  • 洛谷 P8557 炼金术 题解
    题目大意给定\(n\)种金属,放进\(k\)个熔炉,要求最终每种金属都要能从熔炉里拿出来,求熔炉炼金的方案数对\(998244353\)取模。分析从金属角度考虑。不难发现对于每......
  • 洛谷 P3388 【模板】割点(割顶)
    题目链接:https://www.luogu.com.cn/problem/P3388 【模板】割点(割顶)题目背景割点题目描述给出一个$n$个点,$m$条边的无向图,求图的割点。输入格式第一行输入两个......
  • 洛谷 P4840 解题报告
    洛谷P4840解题报告STEP1.题目大意求字符串\(S\)的所有循环同构中本质不同的回文子串数量的最大值。数据范围$|S|\leq1.5e6$STEP2.思路分析看到回......
  • 洛谷P3375 kmp字符串匹配
    #include<bits/stdc++.h>#defineintlonglongusingnamespacestd;inti,j,k,la,lb,kmp[1000005];chara[1000005],b[1000005];signedmain(){  scanf("%s%s",......
  • 洛谷 P1506 拯救oibh总部(DFS / 染色法)
    https://www.luogu.com.cn/problem/P1506题目描述给定n*m的图形,由*和0组成。让我们求出被*四面包围了的0的数量。输入#1450000000*000*0*000*00输出......
  • 洛谷 P2709 小B的询问 题解
    莫队板子。//P2709小B的询问#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constintMAXN=50005;structQuery{ intl,r,id;}q[MAXN];in......
  • 洛谷 P2419 [USACO08JAN]Cow Contest S(最短路:floyed)
    https://www.luogu.com.cn/problem/P2419题目大意:给定n头奶牛(1<=N<=100),按1..N依次编号。m轮:两两之间进行对决,赢了的排在左边,输了的排在右边。我们想知道奶牛们编......
  • 洛谷P8551 Bassline 题解
    P8551Bassline题解分析这道题做月赛的时候想了好久,最后发现其实很简单。我们用样例数据来分析:如图所示,我们将每个区间抽象化为一个一个的长条。题目给我们的两个要......
  • 洛谷 P7861 SAVEZ 题解(哈希)
    2020牛客杯NOIP赛前集训提高第一场T2牛牛的猜球游戏题解目录2020牛客杯NOIP赛前集训提高第一场T2牛牛的猜球游戏题解比赛链接题目题目描述输入格式输出格式样例样例......