Я решаю Project Euler problem 29. У меня есть метод грубой силы, просто отображающий все числа, найденные как истинные, если они не существуют на карте. Ответ, который я получаю, - это 9216, что неверно. Где это происходит? Я тоже пытался использовать набор, но все равно.Какая ошибка в моем коде?
int main()
{
map <long double,bool> m;
long double x;
int c=0;
for(int i=2;i<=100;i++)
{
for(int j=2;j<=100;j++)
{
x=pow((long double)i,(long double)j);
if(m.find(x) == m.end())
{
m.insert (pair<long double,bool>(x,true));
c++;
cout<<x<<endl;
}
}
}
cout<<c<<endl;
}
EDIT:
Я изменил эту линию
m[x]=true;
в
m.insert (pair<long double,bool>(x,true));
Ответ на этот вопрос до сих пор то же самое.
Вы ничего на карте не вставляя. Ты? – Hariprasad
не m [x] = true небезопасный ярлык, чтобы вставить что-то на карту? –
'm [x] = true' будет вставлять ключ' x', если он еще не существует. – Anthony