Карта сайта

Это автоматически сохраненная страница от 18.12.2013. Оригинал был здесь: http://2ch.hk/b/res/59149961.html
Сайт a2ch.ru не связан с авторами и содержимым страницы
жалоба / abuse: admin@a2ch.ru

Срд 18 Дек 2013 09:22:12
Помогите решить задачку на злоебучем паскале

Вам даны число Т и цифра D. Выведите все N-значные числа, которые не содержат цифру D , в возрастающем порядке.

Пример:
In: 1 3
Out: 012456789


%Срд 18 Дек 2013 09:24:24
INFA 100
INFA 100%-1

Срд 18 Дек 2013 09:25:29
1 4 8 8

Срд 18 Дек 2013 09:26:02
>>59150012
только положительные же

Срд 18 Дек 2013 09:27:00
Каждый раз перед выводом на экран, сравниваешь цифру с "ненужной". Какие проблемы?

Срд 18 Дек 2013 09:27:51
>>59149961
А число Т нахуя вообще?

Срд 18 Дек 2013 09:29:07
>>59150077

двачую адекватный вопрос

Срд 18 Дек 2013 09:30:18
>>59150077
там вместо T , N должно быть

Срд 18 Дек 2013 09:30:26
>>59149961
Короче находишь остаток от деления на 10, умножаешь его на 10, сравниваешь с цифрой, которая не нужна, дальше по циклу. Конец.

Срд 18 Дек 2013 09:33:08
>>59150143
Ой, хуйню сказал. Надо просто по разрядам пройтись, я не совсем то написал.

Срд 18 Дек 2013 09:36:20
>>59150201

var
n, d, i, k:integer;
f:text;
begin
assign(f, 'B.in');
reset(f);
readln(f, d, n);
close(f);


assign(f, 'B.out');
rewrite(f);
for i:=1 to N do
begin
if i &t;> d then
writeln(f, k);
i:=i+1;
end;


Чому это не работает?

Срд 18 Дек 2013 09:36:49
паскаль уже не помню, но как-то так
n:=Math.pow(10, n) //10 в степени n
for i:=0 to (n-1)
begin
if i!=D then Write(i);
end;

Срд 18 Дек 2013 09:37:37
>>59150201
Остаток от деления на 10 сравнить с D, для каждого N-значного числа будет цикл от 1 до N, теперь вроде все.

Срд 18 Дек 2013 09:53:47
>>59150293
но тогда если числа будут двузначными, то он будет проверять только десятки, но не единицы

Срд 18 Дек 2013 09:56:01

Срд 18 Дек 2013 09:59:39
>>59150772
вот смотри. если я буду проверять числа вроде 23 и 35, на наличие в них троек, то твой алгоритм уберет число 35, а число 23 оставит, ибо проверяет только десятки

Срд 18 Дек 2013 10:04:06
>не содержат цифру D
>>59150867
Таки да, я обосрался. Но и ты не прав, 35 он тоже пропустит.
Понятия не имею, как это сделать в паскале. Сорьке.

Срд 18 Дек 2013 10:05:21
>>59150996
можешь и в Си, я переведу, знаю и то и то, главное алгоритм

Срд 18 Дек 2013 10:15:40
>>59149961
Все n-значные числа? Если n=10, то заебешься их выводить.

var i, n, d, m: integer;
number:double;

begin

d:=8;
n:=5;
number:=trunc(exp(ln(10)*(n-1))-1);
for i:=trunc(exp(ln(10)(n-1)))-1 to trunc(exp(ln(10)(n)))-2 do
begin
number:=number+1;
m:=trunc(number)-((trunc(number) div 10 )*10);
if m &t;> d then writeln(number)
end;

end.


Суть ты понял, надеюсь. Дальше сам.

Срд 18 Дек 2013 10:17:25
>>59151386
Вакаба сжирает символы, код тут: http://pastebin.com/PSSVd7XU

Срд 18 Дек 2013 10:23:05
>>59151435
Бля, неправильно, забыл же что еще и середину проверять надо.

Срд 18 Дек 2013 10:33:06
>>59151625
там вроде ТОЛЬКО Н-значные, т.е. когда у тебя тысячи, то проверять отдельно цифру десять или сто не требуется. Только тысячас то или тысяча двадцать пять

Срд 18 Дек 2013 10:36:25
>>59151992
То есть, ты хочешь сказать, что если D=4, то число 143 мы не исключаем?
мимо

Срд 18 Дек 2013 10:38:25
>>59152099
исключаем, я имею ввиду, если у нас N=4, мы проверяем только число от 1000 до 9999

Срд 18 Дек 2013 10:38:40
>>59151435
Исправил: http://pastebin.com/PSSVd7XU

Срд 18 Дек 2013 10:40:43
>>59152153
Там так и есть, цикл же от 10^(n-1) до 10^n -1

Срд 18 Дек 2013 10:42:12
>>59149961
В цикле проверяй каждую цифру массива числа n[], нэ?

Срд 18 Дек 2013 10:42:23
>>59152162
Добра тебе, теперь буду думать как в 2 секунды уложиться

Срд 18 Дек 2013 10:46:38
>>59152290
Олимпиадник штоле? Какой город? Можно еще вот так >>59152283
Алсо можно запилить строку с длиной N и в цикле заполнять каждый символ-ячейку всеми цифрами, кроме D.

Срд 18 Дек 2013 10:57:13
>>59152425
Мухосранск, далеко от центра.

Будет слишком долго, если пилить строчку, мне нужно в 2 секунды уложится и в 64мб

Срд 18 Дек 2013 11:08:09
>>59152732
Какой конкретно мухосранск? Какое время тест показывает?
Когда-то просрал кучу времени на одно задание, из-за того что во временные рамки не укладывался.

Срд 18 Дек 2013 11:21:56
>>59153088
в Казахстане, Семей, лол

Максимум семизначное число, на него уходит около 6ти секунд, а если 6ти значное, то где-то за 5, 5 сек

Еще http://pastebin.com/wbFsqmHD второй способ, 7ми значное число делает за 8 секунд, но 6ти значное за две

Срд 18 Дек 2013 11:30:03
Вообщем, я ухожу. Всем спасибо за помощь

ОП


← К списку тредов