数字操作

 

 

 

 

 这道题并不需要高精度。我们把数字当字符串读入进来,把数字倒过来考虑,

然后用 ai 表示第 i 位的数字。
一个小学奥数常识:一个数是 4 的倍数,等价于它的最后两位是 4 的倍数。(为
什么?)
倒过来之后,也就相当于我们只需要管前两位是啥就行。
首先,我们可以考虑啥都不删,那么只需要判断前两位组成的数字是否是 4
的倍数。
简单写一下:
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e3 + 5;
int t, m;
string s;
int a[MAXN];
int main()
{
    ios::sync_with_stdio(false);
    cin>>t;
    while(t--)
    {
        cin>>s;
        m=s.size();
        for(int i=m-1;i>=0;i--) a[m-i]=s[i]-'0';
        int flag=0;
        if(m==1&&a[1]%4==0) flag=1;
        for(int i=1;i<m;i++) if((a[i+1]*10+a[i])%4==0) flag=1;
        for(int i=2;i<=m;i++) if((a[i]*10+a[1])%4==0) flag=1;
        if(flag==1) printf("Yes\n");
        else printf("No\n");
    }
    return 0;
}

 

数字操作
posted @ 2023-03-26 18:05  王浩泽  阅读(16)  评论(0编辑  收藏  举报