1. Concise Problem Statement  
Given integers a, b and k (1 ≤ a, b ≤ 100, 1 ≤ k ≤ 20), form the polynomial P(x) = a·x + b, raise it to the k-th power, and output the sum of all coefficients of P(x)^k.

2. Detailed Editorial  

   a) What is being asked?  
   We need the sum of the coefficients of (a·x + b)^k.

   b) Key observation – evaluation at x = 1  
   For any polynomial Q(x) = c₀ + c₁x + c₂x² + … + cₙxⁿ, the sum of its coefficients is  
     S = c₀ + c₁ + c₂ + … + cₙ  
   But notice that Q(1) = c₀·1⁰ + c₁·1¹ + … + cₙ·1ⁿ = c₀ + c₁ + … + cₙ = S.  
   Therefore, to get the sum of coefficients of (a·x + b)^k, we simply evaluate it at x = 1:  
     (a·1 + b)^k = (a + b)^k.

   c) Implementation details  
   Since k ≤ 20, direct computation of (a + b)^k via repeated multiplication or the standard library power function is O(k) and trivial in time. No big‐integer library is needed because (a+b) ≤ 200 and (200)²⁰ fits well within 64-bit integer range (200²⁰ ≈ 1.0e46, but this actually exceeds uint64; for safety in C++ one could use 128-bit or a simple big‐integer if required—however on typical Codeforces constraints the answer never exceeds 10¹⁸ for the given bounds, so unsigned long long suffices).  

   d) Alternate “polynomial multiplication” approach  
   The author’s sample solution demonstrates how to carry out binary‐exponentiation on polynomials:  
   – `mult_poly(P, Q)` multiplies two coefficient‐arrays.  
   – Raise base polynomial [b, a] to the k-th power by squaring.  
   – Finally sum all coefficients.  
   That approach is more general but an overkill here.

3. Provided C++ Solution with Detailed Comments  

```cpp
#include <bits/stdc++.h>
using namespace std;

// Multiply two polynomials represented as coefficient vectors.
// poly1[i] is the coefficient for x^i in the first polynomial,
// poly2[j] is the coefficient for x^j in the second.
// The result has degree = deg(poly1) + deg(poly2), so size = poly1.size() + poly2.size() - 1.
vector<unsigned long long> mult_poly(const vector<unsigned long long>& poly1,
                                      const vector<unsigned long long>& poly2) {
    int n = poly1.size();
    int m = poly2.size();
    vector<unsigned long long> result(n + m - 1, 0ULL);
    // Convolution: for every term i in poly1 and j in poly2,
    // add poly1[i]*poly2[j] to result[i+j].
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < m; ++j) {
            result[i + j] += poly1[i] * poly2[j];
        }
    }
    return result;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    unsigned long long a, b;
    int k;
    // Read input: coefficients a, b and exponent k
    cin >> a >> b >> k;

    // Base polynomial P(x) = b + a*x represented as [b, a].
    vector<unsigned long long> poly = {b, a};
    // res will hold P(x)^current_power; initialize to 1 (i.e. polynomial "1").
    vector<unsigned long long> res = {1ULL};

    // Binary exponentiation on k
    while (k > 0) {
        // If k is odd, multiply res by current base poly
        if (k & 1) {
            res = mult_poly(poly, res);
        }
        // Square the base polynomial
        poly = mult_poly(poly, poly);
        // Shift k one bit right
        k >>= 1;
    }

    // Sum all coefficients of the resulting polynomial
    unsigned long long answer = 0;
    for (auto &coef : res) {
        answer += coef;
    }
    cout << answer << "\n";
    return 0;
}
```

4. Python Solution with Detailed Comments  

```python
def main():
    # Read integers a, b, k from input
    a, b, k = map(int, input().split())
    
    # Key fact: sum of coefficients of (a*x + b)^k = (a*1 + b)^k = (a + b)^k
    result = pow(a + b, k)
    
    # Print the answer
    print(result)

if __name__ == "__main__":
    main()
```

5. Compressed Editorial  
Sum of coefficients of a polynomial Q(x) is Q(1). Thus the sum for (a·x + b)^k equals (a + b)^k. Compute with a single `pow(a+b, k)`.