#include <iostream>
signed sum_range1(signed count)
{
signed accu = 0;
for (signed i = 0; i <= count; ++i) accu += i;
return accu;
}
unsigned sum_range2(unsigned count)
{
unsigned accu = 0;
for (unsigned i = 0; i != count + 1; ++i) accu += i;
return accu;
}
signed sum_array_evens1(signed * array, signed len)
{
signed accu = 0;
for (signed i = 0; i < len; i += 2) accu += array[i];
return accu;
}
unsigned sum_array_evens2(unsigned * array, unsigned len)
{
unsigned accu = 0;
for (auto cur = array, last = array + len; cur < last; cur += 2) accu += *cur;
return accu;
}
int main()
{
signed array1[] = {1, 2, 3, 4};
unsigned array2[] = {1, 2, 3, 4};
std::cout << "sum_range1(100): ";
std::cout << sum_range1(100) << "\n";
std::cout << "sum_range2(100): ";
std::cout << sum_range2(100) << "\n";
std::cout << "sum_array_evens1(array1, 3): ";
std::cout << sum_array_evens1(array1, 3) << "\n";
std::cout << "sum_array_evens2(array2, 3): ";
std::cout << sum_array_evens2(array2, 3) << "\n";
std::cout << "sum_array_evens1(array1, 4): ";
std::cout << sum_array_evens1(array1, 4) << "\n";
std::cout << "sum_array_evens2(array2, 4): ";
std::cout << sum_array_evens2(array2, 4) << "\n";
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc2lnbmVkIHN1bV9yYW5nZTEoc2lnbmVkIGNvdW50KQp7CglzaWduZWQgYWNjdSA9IDA7Cglmb3IgKHNpZ25lZCBpID0gMDsgaSA8PSBjb3VudDsgKytpKSBhY2N1ICs9IGk7CglyZXR1cm4gYWNjdTsKfQoKdW5zaWduZWQgc3VtX3JhbmdlMih1bnNpZ25lZCBjb3VudCkKewoJdW5zaWduZWQgYWNjdSA9IDA7Cglmb3IgKHVuc2lnbmVkIGkgPSAwOyBpICE9IGNvdW50ICsgMTsgKytpKSBhY2N1ICs9IGk7CglyZXR1cm4gYWNjdTsKfQoKc2lnbmVkIHN1bV9hcnJheV9ldmVuczEoc2lnbmVkICogYXJyYXksIHNpZ25lZCBsZW4pCnsKCXNpZ25lZCBhY2N1ID0gMDsKCWZvciAoc2lnbmVkIGkgPSAwOyBpIDwgbGVuOyBpICs9IDIpIGFjY3UgKz0gYXJyYXlbaV07CglyZXR1cm4gYWNjdTsKfQoKdW5zaWduZWQgc3VtX2FycmF5X2V2ZW5zMih1bnNpZ25lZCAqIGFycmF5LCB1bnNpZ25lZCBsZW4pCnsKCXVuc2lnbmVkIGFjY3UgPSAwOwoJZm9yIChhdXRvIGN1ciA9IGFycmF5LCBsYXN0ID0gYXJyYXkgKyBsZW47IGN1ciA8IGxhc3Q7IGN1ciArPSAyKSBhY2N1ICs9ICpjdXI7CglyZXR1cm4gYWNjdTsKfQoKaW50IG1haW4oKQp7CglzaWduZWQgYXJyYXkxW10gPSB7MSwgMiwgMywgNH07Cgl1bnNpZ25lZCBhcnJheTJbXSA9IHsxLCAyLCAzLCA0fTsJCgoJc3RkOjpjb3V0IDw8ICJzdW1fcmFuZ2UxKDEwMCk6ICI7CglzdGQ6OmNvdXQgPDwgc3VtX3JhbmdlMSgxMDApIDw8ICJcbiI7CglzdGQ6OmNvdXQgPDwgInN1bV9yYW5nZTIoMTAwKTogIjsKCXN0ZDo6Y291dCA8PCBzdW1fcmFuZ2UyKDEwMCkgPDwgIlxuIjsKCXN0ZDo6Y291dCA8PCAic3VtX2FycmF5X2V2ZW5zMShhcnJheTEsIDMpOiAiOwoJc3RkOjpjb3V0IDw8IHN1bV9hcnJheV9ldmVuczEoYXJyYXkxLCAzKSA8PCAiXG4iOwoJc3RkOjpjb3V0IDw8ICJzdW1fYXJyYXlfZXZlbnMyKGFycmF5MiwgMyk6ICI7CglzdGQ6OmNvdXQgPDwgc3VtX2FycmF5X2V2ZW5zMihhcnJheTIsIDMpIDw8ICJcbiI7CglzdGQ6OmNvdXQgPDwgInN1bV9hcnJheV9ldmVuczEoYXJyYXkxLCA0KTogIjsKCXN0ZDo6Y291dCA8PCBzdW1fYXJyYXlfZXZlbnMxKGFycmF5MSwgNCkgPDwgIlxuIjsKCXN0ZDo6Y291dCA8PCAic3VtX2FycmF5X2V2ZW5zMihhcnJheTIsIDQpOiAiOwoJc3RkOjpjb3V0IDw8IHN1bV9hcnJheV9ldmVuczIoYXJyYXkyLCA0KSA8PCAiXG4iOwp9