andyli

题解 CF1183A 【Nearest Interesting Number】
从$a$开始依次尝试$a+1$,$a+2$,$...$,每次判断当前尝试的数是否满足每一位上的数字和为$4$的倍数...
扫描右侧二维码阅读全文
28
2019/08

题解 CF1183A 【Nearest Interesting Number】

从$a$开始依次尝试$a+1$,$a+2$,$...$,每次判断当前尝试的数是否满足每一位上的数字和为$4$的倍数即可。
统计一个数每一位上的数字和有许多种方法,一种是先使用$sprintf/stringstream$或其他方法将数字转换成字符串,再把字符串中的每一个字符相加(注意相加时先减去$'0'$),另一种则是循环依次从个位开始取这个数字的每一位,再相加即可。因为前者涉及字符串操作,效率比后者低,因此这里采用后者。
代码如下:

#include <cstdio>

bool check(int x) {
    int cnt = 0;
    while (x) {
        cnt += x % 10;
        x /= 10;
    }
    return cnt % 4 == 0;
}

int main() {
    int a;
    scanf("%d", &a);
    int ans = a;
    while (!check(ans)) 
        ans++;
    printf("%d\n", ans);
    return 0;
}
Last modification:November 23rd, 2019 at 11:19 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment