Для заданного числа N найти наименьшее положительное число с суммой цифр равной N, которое делится на N.
Входные данные
Входные данные состоят из нескольких тестов. Для каждого теста в одной строке записано одно число N (1< N<109). Тесты заканчиваются строкой с единственным числом 0.
Выходные данные
В каждой строке выходных данных содержится единственное искомое число. Выходные данные заканчиваются строкой с числом 0.
Вот и решение:
#include "stdafx.h"
#include
using namespace std;
#define SIZE 1000000000
#define SIZE1 1000000000000000
int _tmain(int argc, _TCHAR* argv[])
{
unsigned long long N,i,b[20],summa,a[20];
bool sss=false;
int j,k;
while (1)
{
cout<<"Vvedite chislo: ";
cin>>N;
if (N==0)
exit(1);
else
if (N>1 && N
{
for (i=N; i<=SIZE1 ;i++)
{
if (i%N==0)
{
summa=0;
b[0]=i;
for (j=0; j<=15. ; j++)
{
a[j]=b[j] % 10;
b[j+1]=b[j] / 10;
if (b[j+1]==0)
{
for (k=0; k<=j ;k++)
{
summa=summa+a[k];
}
if (summa==N)
sss=true;
else
sss=false;
break;
}
}
}
if (sss)
{
cout<'\n';
break;
}
}
}
else
cout<<"\nVvedite chislo bolshe 1 i menshe 1000000000.\nEsli vvedete 0 proqramma zavershitsa!\n\n";
}
return 0;
}