Biểu thức tổng đặc biệt


Submit solution

Points: 3
Time limit: 1.0s
Memory limit: 250M

Author:
Problem type
Allowed languages
Ada, Assembly, Awk, C, C++, C11, CLANG, CLANGX, Classical, COBOL, Coffee, CSC, D lang, DART, F95, FORTH, Fortrn, GAS32, GO, Haskell, Itercal, Java, kotlin, LEAN, LISP, LUA, MONOVB, Nasm, OCAML, Pascal, Perl, php, PIKE, prolog, Pypy, Python, Ruby 2, RUST, Scala, SCM, SED, SWIFT, TCL, TUR, V8JS, VB, ZIG

Cho một xâu S chỉ gồm các chữ số từ '1' đến '9'. Bạn có thể thêm một vài dấu '+' và giữa 2 chữ số bất kỳ để tạo thành một biểu thức tổng. Chú ý không được chèn 2 dấu '+' liên tiếp nhau hoặc chèn vào đầu và cuối xâu. Nhiệm vụ của bạn là tính tổng tất cả các giá trị của các biểu thức tổng thu được theo cách mô tả trên.

Input:

  • Dòng đầu tiên gồm xâu S, |S| là ký hiệu độ dài xâu.
  • \((1 \le |S| \le 10 )\)

Output:

Giá trị tổng thu được của tất cả các biểu thức có thể tạo ra.

Example 1:

Input:

345

Output:

444

Explanation:

  • Có 4 biểu thực có thể được tạo ra là 345, 34 + 5, 3 + 45, 3 + 4 + 5.
  • Giá trị của từng biểu thức là :
  • 345
  • 34 + 5 = 39
  • 3 + 45 = 48
  • 3 + 4 + 5 = 12
  • Tổng các giá trị là : 345 + 39 + 48 + 12 = 444

Example 2:

Input:

999999999

Output:

1265621760

Comments


  • -1
    tuongTran  commented on March 2, 2024, 11:04 a.m.

    include <iostream>

    include <string>

    include <cmath>

    using namespace std;

    long long calculateSum(string s) { int n = s.length(); int numExpressions = pow(2, n - 1); long long sum = 0;

    for (int i = 0; i < numExpressions; i++) {
        long long currentSum = 0;
        long long currentNum = s[0] - '0';
    
        for (int j = 1; j < n; j++) {
            if ((i >> (j - 1)) & 1) {
                currentSum += currentNum;
                currentNum = 0;
            }
            currentNum = currentNum * 10 + (s[j] - '0');
        }
    
        currentSum += currentNum;
        sum += currentSum;
    }
    
    return sum;

    }

    int main() { string s; cout << "Nhập xâu S: "; cin >> s;

    long long sum = calculateSum(s);
    
    cout << "Tổng các giá trị của các biểu thức tổng: " << sum << endl;
    
    return 0;

    }