跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

如何通过删除数字片段来判断是否能被4整除?

大家好,我是顺亿,今天我们来聊聊一个有趣的问题:如何通过删除数字片段来判断一个数是否能被4整除?听起来有点复杂,但其实只要掌握了方法,你会发现这个问题并不难。

首先,我们来了解一下题目背景。题目要求我们给定一个正整数,可以通过删除一部分数字(但不能删除所有数字)来判断是否能通过最多一次操作将其变为4的倍数。

接下来,我会用我的风格来解析这个问题,并分享一些实战经验和心得体会。

思路描述

题意可以简化成给你一个数,你可以删除某个片段,然后判断剩下的数是否能被4整除。由于数据范围限制,我们可以考虑用字符串模拟来解决这个问题。

具体来说,我们可以使用字符串的erase函数来删除指定片段,然后判断剩余的数是否能被4整除。需要注意的是,题目中明确指出不能删除所有数字,所以在枚举时需要特别注意。

AC 代码

#include 
#include 
using namespace std;

string num;

signed main()
{
    int T;
    for(cin >> T; T --; ){
        cin >> num;
        bool flag = false;
        if(stoll(num) % 4 == 0){
            flag = true;
        }
        for(int i = 0; i < num.size() && !flag; i ++){
            for(int j = i; j < num.size(); j ++){
                string temp = num;
                if(i == 0 && j == num.size() - 1){ //题目中说了不可以全部删除
                    break;
                }
                temp.erase(i , j - i + 1); //从i到j共有j-i+1个字符
                if(stoll(temp) % 4 == 0){
                    flag = true;
                    break;
                }
            }
        }
        if(flag == true){
            cout <<
                            

相关文章