CF1567C Carrying Conundrum

CF1567C Carrying Conundrum

由于我们进位是进到下下位, 所以只有相隔一位的位之间会产生影响.

我们就把每个数按照奇偶位分成两个数, 然后乘起来就是方案数, 由于不能有 \(0\) , 所以记得 \(- 2\) .

\(code:\)

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int read() {
    int x = 0, f = 1;
    char ch = getchar();
    while (!isdigit(ch)) {
        if (ch == '-') f = -1;
        ch = getchar();
    }
    while (isdigit(ch)) {
        x = (x << 1) + (x << 3) + (ch ^ 48);
        ch = getchar();
    }
    return x * f;
}
const int N = 505;
int s[2];
int main() {
    int T = read();
    while (T--) {
        s[0] = s[1] = 0;
        int o = 1;
        char ch = getchar();
        while (isdigit(ch)) {
            o ^= 1;
            s[o] = s[o] * 10 + (ch ^ 48);
            ch = getchar();
        }
        s[0]++, s[1]++;
        printf("%d\n", s[0] * s[1] - 2);
    }
    return 0;
}
posted @ 2021-09-07 10:11  sshadows  阅读(38)  评论(0编辑  收藏  举报