mumiaxd1337
Faktycznie przeoczyłem warunek dla n=0. Co do złożoności to jestem świadomy, że istnieją efektywniejsze metody, ale w zadaniu nie ma napisanego jaki ma być maksymalny czas wykonania programu. N w zadaniu jest z zakresu 0 <= n <= 10^9, a nie do 10^19, więc na potrzebę tego zadania brute force wystarczy.
Miloooo2713718294723
dziękuję serdecznie, aby program działał na 100pkt musiałem usunąć else pod koniec ;)
#include <iostream>
using namespace std;
int sumDigit(int n)
{
int sum = 0;
while(n > 0)
{
sum += n % 10;
n /=10;
}
return sum;
}
int main()
{
int n;
cin >> n;
if(n != 0){
int sum = sumDigit(n);
int i = n+1;
while(sumDigit(i) != sum) i++;
cout << i << endl;
}
else
{
cout << "brak rozwiązań" << endl;
}
return 0;
}
Łatwo zauważyć przyjmując 1 ≤ n ≤ ¹⁹, np. n = 9400000000000000000, że komputer musiałby bardzo, bardzo długo liczyć.
PS
Dla n = 0 nie ma rozwiązania...