zoukankan      html  css  js  c++  java
  • [CF550C] Divisibility by Eight

    [CF550C] Divisibility by Eight

    Description

    给你一个位数不超过 100 的非负整数 N(不含前导 0)。你的任务是判断这个数字能否通过去掉其中的一些位上的数(当然不能去掉全部),使其成为一个能被 8 整除的正整数(不含前导 0)。特别注意:你不能重新排列数字的顺序。

    Solution

    一个数要被八整除,关键是最后三位

    因此我们枚举最后三位是原数的哪三位,判断是否能被 8 整除即可

    #include <bits/stdc++.h>
    using namespace std;
    #define int long long
    
    signed main()
    {
        ios::sync_with_stdio(false);
        string s;
        cin >> s;
        s = "0000" + s;
        for (int i = 0; i < s.length(); i++)
            s[i] -= '0';
        int n = s.length() - 1;
        for (int i = 2; i <= n; i++)
            for (int j = i + 1; j <= n; j++)
                for (int k = j + 1; k <= n; k++)
                {
                    int t = s[i] * 100 + s[j] * 10 + s[k];
                    if (t % 8 == 0)
                    {
                        cout << "YES" << endl
                             << t;
                        return 0;
                    }
                }
        cout << "NO";
    }
    
  • 相关阅读:
    sqlsever中生成GUID的方法
    部署项目到服务器
    读后感
    第二次作业
    课堂作业
    第一次作业 开发环境配置介绍
    第二次结对作业
    代码审查
    最大连续子数组和
    单元测试
  • 原文地址:https://www.cnblogs.com/mollnn/p/14430118.html
Copyright © 2011-2022 走看看