Просмотр полной версии : Задача по программированию
Срочно надо решить задачю, помогите пожалуйста, задача с входными файлами!:D
Число Цукермана — такое натуральное число, которое делится на произведение своих цифр, например: 175 делится на 1⋅7⋅5=35. Надите 5 наибольших чисел Цукермана, состоящих не более чем из n цифр. Программа должна считать выходые данные из файла input.txt и вывести результат в файл output.txt
Формат входного файла.
Входной файл содержит целое число n (1≤n≤5).
Формат выходного файла.
Выведите в выходной файл 5 наибольших чисел Цукермана в порядке возрастания.
Пример
input.txt output.txt
4 7119 8112 8832 9315 9612
1 5 6 7 8 9
DennisBergkamp
07.03.2009, 11:20
Срочно надо решить задачю, помогите пожалуйста, задача с входными файлами!:D
Число Цукермана — такое натуральное число, которое делится на произведение своих цифр, например: 175 делится на 1⋅7⋅5=35. Надите 5 наибольших чисел Цукермана, состоящих не более чем из n цифр. Программа должна считать выходые данные из файла input.txt и вывести результат в файл output.txt
Формат входного файла.
Входной файл содержит целое число n (1≤n≤5).
Формат выходного файла.
Выведите в выходной файл 5 наибольших чисел Цукермана в порядке возрастания.
Пример
input.txt output.txt
4 7119 8112 8832 9315 9612
1 5 6 7 8 9
язык то какой нужен напиши
язык то какой нужен напиши
Так ему, я так понял, нужен сам принцип построения алгоритма,а дальше вроде он сам может.
Kup9
Айайай.. про число Армстронга, решил задачу?
и ещё меня интересует площадь квадратов
DennisBergkamp
07.03.2009, 22:23
Так ему, я так понял, нужен сам принцип построения алгоритма,а дальше вроде он сам может.
Ну тут вроде ничего особо сложного нет.
\\берем из файла n
int max=9,pr=1,tmp=0;
for(int i=1;i<n;i++)
{
max=max*10+9
}
for(int j=0;j<=max;j++)
{
for(int k=0;k<n;k++)
{
tmp=j%10
pr*=tmp;
}
if( (j%pr)==0 )
{\\записываем в какой-нибудь массив}
}
\\затем сортируем массив по убыванию, и записываем 5 самых больших в файл
Вроде все так должно быть. Хотя я не проверял :)
Если нужно подробнее на счет записи и чтения, напишу, но врятли раньше понедельника.
в понедельник уже поздно будет..
кстати я её решил)
DennisBergkamp
По мне, трудность заключается во взятии каждого разряда числа.
Честно говоря, я не понял, где здесь происходит деление на каждый разряд числа? =)
напиши на каком языке надо?
паскаль, С, дельфи
на чём сможете на том пишите
Скачать программу "Цукерман" (http://ifolder.ru/10926236)
Написал на паскале
DennisBergkamp
08.03.2009, 14:05
DennisBergkamp
По мне, трудность заключается во взятии каждого разряда числа.
Честно говоря, я не понял, где здесь происходит деление на каждый разряд числа? =)
Ну собственно вот:
for(int j=0;j<=max;j++)
{
for(int k=0;k<n;k++)
{
tmp=j%10
pr*=tmp;
}
if( (j%pr)==0 )
{\\записываем в какой-нибудь массив}
}
Правда я накосячил :)
Надо было вот так:
for(int j=0;j<=max;j++)
{
int jj=j;
for(int k=0;k<n;k++)
{
tmp=jj%10;
pr*=tmp;
jj/=10;
}
if( (jj%pr)==0 )
{\\записываем в какой-нибудь массив}
}
Тут я отделяю, с помощью операции остаток от деления, последнюю цифру. И сразу ее домножаю к произведению всех цифр. Затем делю на 10(вот про это я совсем забыл :) ), чтобы при следующей обработке получить следующую цифру.
SerginhoLD
17.03.2009, 10:07
http://www.ii4.ru/thumbs/930539111.JPG ('http://www.ii4.ru/viewer.php?id=930539111.JPG')
http://www.ii4.ru/thumbs/151627222.JPG ('http://www.ii4.ru/viewer.php?id=151627222.JPG')
в универе переходим с дельфи на с++. Вот делаю лабу, никак не пойму почему тип функции не определяется TFunc