Как-то решал задачку:
Вывести ряд чисел удовлетворяющих условию: сумма двух ненулевых слагаемых составленных из знаков числа возведенного в квадрат равняется самому числу
Надо было сделать за 30 минут.
fun only (очередная бессмысленная публикация).
&НаСервере
Процедура Команда1НаСервере()
x = 0;
Пока x <> 35000 Цикл
КвадратЧисла = x*x;
Если КвадратЧисла <> 0 Тогда
// Получим квадрат числа в виде нормализованной строки ( без пробелов и переносов)
КвадратЧислаТекст =СтрЗаменить(Строка(КвадратЧисла),Символы.НПП,"");
КвадратЧислаТекст =СтрЗаменить(КвадратЧислаТекст,Символы.ПС,"");
// получим длину строки и начнем цикл
// как первое слагаемое мы представим первый символ как второе -все остальные
// складываем и проверяем на искомый результат
ДлинаЦикла = СтрДлина(КвадратЧислаТекст);
ч = 0;
Пока ч<> ДлинаЦикла Цикл
ПервоеСлагаемое = Сред(КвадратЧислаТекст,0,ч);
ДлинаПервогоСлагаемого = СтрДлина(ПервоеСлагаемое);
ВтороеСлагаемое = Прав(КвадратЧислаТекст,ДлинаЦикла-ДлинаПервогоСлагаемого);
Попытка
ЧислоПС=Число(ПервоеСлагаемое);
ЧислоВС=Число(ВтороеСлагаемое);
Если ЧислоПС + ЧислоВС = x
и Не(ЧислоПС = 0 Или ЧислоВС =0) Тогда
ст = Объект.Результат1.Добавить();
ст.сл1 = ПервоеСлагаемое;
Ст.сл2 = ВтороеСлагаемое;
Ст.число = Строка(x);
Ст.КвадратЧисла = КвадратЧислаТекст;
КонецЕсли;
Исключение
КонецПопытки;
ч= ч +1;
КонецЦикла;
КонецЕсли;
x =x +1;
КонецЦикла;
КонецПроцедуры
Проверено на следующих конфигурациях и релизах:
- 1С:Библиотека стандартных подсистем, редакция 3.1, релизы 3.1.10.357