#include <iostream>
int sumOfMultipleOfX(int minRange, int maxRange, int mul)
{
minRange = ((minRange + mul - 1) / mul) * mul;
maxRange = (maxRange / mul) * mul;
if (maxRange < minRange) {
return 0;
}
return (maxRange + minRange) * (maxRange - minRange + mul) / (2 * mul);
}
int sumOfMultipleOf3Or5(int minRange, int maxRange)
{
return sumOfMultipleOfX(minRange, maxRange, 3)
+ sumOfMultipleOfX(minRange, maxRange, 5)
- sumOfMultipleOfX(minRange, maxRange, 15);
}
int main (){
std::cout << sumOfMultipleOf3Or5(0, 15) << std::endl; // 3 + 6 + 9 + 12 + 5 + 10 + 15
std::cout << sumOfMultipleOf3Or5(0, 1000) << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKaW50IHN1bU9mTXVsdGlwbGVPZlgoaW50IG1pblJhbmdlLCBpbnQgbWF4UmFuZ2UsIGludCBtdWwpCnsKICAgIG1pblJhbmdlID0gKChtaW5SYW5nZSArIG11bCAtIDEpIC8gbXVsKSAqIG11bDsKICAgIG1heFJhbmdlID0gKG1heFJhbmdlIC8gbXVsKSAqIG11bDsKICAgIAogICAgaWYgKG1heFJhbmdlIDwgbWluUmFuZ2UpIHsKICAgICAgICByZXR1cm4gMDsgICAKICAgIH0KICAgIHJldHVybiAobWF4UmFuZ2UgKyBtaW5SYW5nZSkgKiAobWF4UmFuZ2UgLSBtaW5SYW5nZSArIG11bCkgLyAoMiAqIG11bCk7Cn0KCmludCBzdW1PZk11bHRpcGxlT2YzT3I1KGludCBtaW5SYW5nZSwgaW50IG1heFJhbmdlKQp7CiAgICByZXR1cm4gc3VtT2ZNdWx0aXBsZU9mWChtaW5SYW5nZSwgbWF4UmFuZ2UsIDMpCiAgICAgICAgKyBzdW1PZk11bHRpcGxlT2ZYKG1pblJhbmdlLCBtYXhSYW5nZSwgNSkKICAgICAgICAtIHN1bU9mTXVsdGlwbGVPZlgobWluUmFuZ2UsIG1heFJhbmdlLCAxNSk7Cn0KCgppbnQgbWFpbiAoKXsKICAgIHN0ZDo6Y291dCA8PCBzdW1PZk11bHRpcGxlT2YzT3I1KDAsIDE1KSA8PCBzdGQ6OmVuZGw7IC8vIDMgKyA2ICsgOSArIDEyICsgNSArIDEwICsgMTUKICAgIHN0ZDo6Y291dCA8PCBzdW1PZk11bHRpcGxlT2YzT3I1KDAsIDEwMDApIDw8IHN0ZDo6ZW5kbDsKfQ==