• BZOJ 5544: [PA2019]A + B


    5544: [PA2019]A + B

    Time Limit: 1 Sec  Memory Limit: 256 MB
    Submit: 16  Solved: 13
    [Submit][Status][Discuss]

    Description

    在列竖式计算两个十进制数的和的时候,人们可能会错算成这样:
    在图里的左边,248+208被错算成了4416。
    给定正整数n,问有多少对非负整数a,b满足a+b会被错算成n。请注意a可以等于b,且a=1,b=2和a=2,b=1是两种不同的方案。

    Input

    第一行包含一个正整数n(1<=n<10^18)。

    Output

    输出一个整数,即满足条件的a,b的数量。

    Sample Input

    112

    Sample Output

    50

    HINT

    Source

    [Submit][Status][Discuss]

    老年人好久没来BZOJ做题了……

    数位DP,F[i]表示前i位方案数,转移有两种——

    1. 第i位由一对数字加出

    2. 第i位和第i-1位一起由一对数字加出

     1 #include <iostream>
     2 #include <algorithm>
     3 
     4 using namespace std;
     5 
     6 typedef long long Int;
     7 
     8 int main() {
     9     Int n;
    10     cin >> n;
    11     int a[20], c = 0;
    12     for (; n; n /= 10)
    13         a[++c] = n % 10;
    14     reverse(a + 1, a + c + 1);
    15     Int f[20] = {};
    16     f[0] = 1;
    17     for (int i = 1; i <= c; ++i) {
    18         f[i] += f[i - 1] * (a[i] + 1);
    19         if (i >= 2 && a[i - 1] == 1)
    20             f[i] += f[i - 2] * (9 - a[i]);
    21         // cout << i << ": " << f[i] << endl;
    22     }
    23     cout << f[c] << endl;
    24     return 0;
    25 }
    BZOJ 5544
  • 相关阅读:
    lodash kebabCase
    lodash escapeRegExp 转义正则特殊字符
    lodash capitalize 首字母大写
    lodash camelCase 驼峰写法
    lodash pick
    lodash random
    lodash round
    Linux 目录结构
    每天一个linux命令(6/18):lsof命令
    Linux 内核编译步骤及配置详解
  • 原文地址:https://www.cnblogs.com/yousiki/p/12229641.html
Copyright © 2020-2023  润新知