Моя общая задача - вычислить
Согласно Вольфраму,
![LaTeX for https://www.wolframalpha.com/input/?i=9*36%5E6%2B13*36%5E5%2B19*36%5E4%2B6*36%5E3%2B7*36%5E2%2B8*36%2B2](https://i.stack.imgur.com/81NUF.png)
Я ожидал, что следующее вернет то же самое:
#include <iostream>
#include <vector>
#include <math.h>
unsigned long long f(const std::vector<unsigned> &coefficients)
{
unsigned short exponent = coefficients.size() - 1;
unsigned long long sum;
for (unsigned i : coefficients)
{
sum += i * pow(36, exponent);
--exponent;
}
return sum;
}
int main()
{
std::cout << f({9,13,19,6,7,8,2});
}
но вместо этого он возвращает 20416905041
.Минимальная емкость длинного целого без знака - от 0 до 18446744073709551615, согласно Алексу Б на этот вопрос , поэтому проблема в емкости не возникает.
Технические характеристики:
- Компилятор: x86_64-w64-mingw32 из набора компиляторов Windows TDM-GCC
- Скомпилировано с помощью
g++ mwe.cpp -std=c++11 -omwe
- ОС: Windows 10Дом