#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int GetLength(int n);
int GetSum(int n);
int main()
{
vector<int> d;
int number;
int best = 2;
int lengthC = 1;
cin >> number;
while (number % best != 0) best++;
while (number >= best)
{
int temp = 0;
if ((find(d.begin(), d.end(), best) == d.end()) && number % best == 0)
{
d.push_back(best);
temp = best;
best++;
}
else
{
while (number % best != 0 && best != temp) best++;
}
}
best = d[0];
for (int j = 1; j < d.size(); j++)
{
int fD = GetSum(d[j]) - GetLength(d[j]);
int fB = GetSum(best) - GetLength(best);
if (fD <= fB)
{
best = d[j];
}
}
cout << best;
return 0;
}
int GetLength(int n)
{
int counter = 0;
while (n != 0)
{
n /= 10;
counter++;
}
return counter;
}
int GetSum(int n)
{
switch(GetLength(n)
{
case '1':
return n;
break;
case '2':
return (n % 10 + n / 10);
break;
case '3':
return (n / 100 + n / 10 % 10 + n % 100 % 10);
break;
case '4':
return ((n / 1000) + (n / 100 % 10) + (n / 10 % 100 % 10) + (n % 10));
break;
case '5':
return ((n / 10000) + (n / 1000 % 10) + (n / 100 % 100 % 10) + (n % 100 / 10) + (n % 10));
break;
}
}
Почему на строке 31(int fD =...) всегда возвращается значение -49 независимо от значения?
Вы в case
ах-то сравнивайте с числами, а не с символами. Ну не равно 1
и '1'
...
И вообще - вас компилятор должен был предупредить, что вы в GetSum
можете вылететь без конкретного возвращаемого значения. Почему проигнорировали?!
И, да, я не смотрел внимательно ваш switch
, но кажется мне, что что-то там наверчено лишнего. Это же сумма цифр? ну так
int sum = 0;
while(n)
{
sum += n%10;
n /= 10;
}
return sum;
Или вам обязательно через switch
? А если число шестизначное? :)
я не тестировал ваш код, но наверное компилятор не понимая что вы написали в GetSum, в точке вызова GetSum возврашает вам символ '1', неявно преобразовав его в int, и поскольку int('1') == 49, то ваш результат будет таким в любом случае
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
У меня в проекте используются библиотеки Boost и WebRTCПри попытке собрать проект возникает проблема со сборкой WebRTC вот скриншот
При использовании компилятора Microsoft в Qt-проекте в окне сборки выводятся сообщения об ошибках и предупреждениях с поломанной кодировкойНапример: