Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- double general(long long a, long long b, long long c) {
- return (-b + std::sqrt(b * b - 4 * a * c)) / (2 * a);
- }
- bool k_sumandos(int k, long long n) {
- auto num = 2 * n - k * k + k;
- auto den = 2 * k;
- return num > 0 && num % den == 0;
- }
- int formas(long long n) {
- int res = 0;
- for (int k = 1, t = general(1, 1, -2 * n); k <= t; ++k) {
- res += k_sumandos(k, n);
- }
- return res;
- }
- int main( ) {
- std::ios_base::sync_with_stdio(0);
- std::cin.tie(0);
- std::cout.tie(0);
- int cases;
- std::cin >> cases;
- for (int i = 1; i <= cases; ++i) {
- long long x;
- std::cin >> x;
- std::cout << "case " << i << ": " << formas(x) - 1 << "\n";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement