Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/12: Рейтинг темы: голосов - 12, средняя оценка - 4.67
 Аватар для Astonjke
29 / 29 / 18
Регистрация: 21.12.2009
Сообщений: 79

Число 0,10100100010000100000....

04.02.2010, 22:43. Показов 2700. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дано число 0,10100100010000100000....
Написать приграмму, используя файлы, которая будет выдавать на экран n-ю цыфру этого числа (0 или 1). N вводить нужно с клавиатуры (n<10^50)

Помогите плиз! Вот есть программа, но в ней можно ввести n максимум из 10 цыфр:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
program p1;
uses crt;
var  t:text;
     n:longint;
     i:longint;
begin
clrscr;
write('n=');
readln(n);
 
i:=1;
while i<n do begin
          dec(n,i);
          inc(i);
          end;
 
assign(f,'first.sol');
rewrite(f);
writeln (Otvet v faile "first.sol":');
if n=i
then begin writeln(f,1); writeln (1);
     end
else begin writeln(f,0); writeln (0);
     end;
 
close(f);
readln;
end.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.02.2010, 22:43
Ответы с готовыми решениями:

Дано целое число. Вывести его строку-описание вида «отрицательное чет-ное число», «нулевое число», «положительное нечетное число» и т. д.
Дано целое число. Вывести его строку-описание вида «отрицательное чет-ное число», «нулевое число», «положительное нечетное число» и т. д. ...

Сколько существует программ, которые число a преобразуют в число b,а затем это число преобразуют в число c
Нужно написать общую программу,решающую задачу. У исполнителя две команды, которым присвоены номера: Прибавить 1 Умножить на 2 ...

Дано натуральное число n. Создать новое число, которое получается написав число обратным порядком
Например, если дано 3578, то получится 8753. Есть такой вариант, но нужно короче... ВАЖНО Нужно именно создать новое число, а не...

29
Почетный модератор
 Аватар для Puporev
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
06.02.2010, 07:29
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от lexus_ilia Посмотреть сообщение
N - это не заданное количество цифр,
Действительно, а что тогда, если написано
N вводить нужно с клавиатуры (n<10^50)
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
06.02.2010, 07:47
Цитата Сообщение от Mawrat Посмотреть сообщение
А что же это?
Цитата Сообщение от Puporev Посмотреть сообщение
Действительно, а что тогда, если написано
N - это и не заданное количество цифр. N - это порядковый номер номер цифры, которую необходимо найти
Цитата Сообщение от Astonjke Посмотреть сообщение
которая будет выдавать на экран n-ю цыфру этого числа
т.е. есть к примеру 15638472. N=3. Ответ: 6. При чем тут количество цифр? (риторический)
0
Почетный модератор
 Аватар для Puporev
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
06.02.2010, 07:52
Inadequate, Какая нафиг разница, номер или количество? Мне интересно как это число задать с клавиатуры? 10^49 например, чтобы потом с ним сравнивать найденный результат, типа
Pascal
1
while k<=n
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
06.02.2010, 08:26
Puporev, ну это уже другой вопрос, но Илья правильно написал. Что касается ввода N<10^50 то, я думаю, что тут ТС где-то накосячил с условием, пусть идет и уточняет там, где он его взял. Потому как условие - бред...
0
Почетный модератор
 Аватар для Puporev
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
06.02.2010, 08:47
Может и не бред. Вводить номер цифры как строку, а потом сравнивать по длине строки
Pascal
1
while length(s)<=length(nomer) do
0
Платежеспособный зверь
 Аватар для кот Бегемот
8966 / 4389 / 1655
Регистрация: 28.10.2009
Сообщений: 11,647
06.02.2010, 09:29
не пойму, в чём сложность-то? я же уже писал общий принцип, уточню алгоритм:
1. вводим число n как строку
2. разбиваем на символы, переводим в цифры и формируем массив цифр и массив счётчика
3. по тем же правилам длинной арифметики формируем счётчик, добавляя единицу на каждом шаге к последнему элементу массива счётчика
4. вычитаем из первого числа второе по правилам длинной арифметики
5. продолжаем увеличивать счетчик и вычитать пока не дойдём до нуля или до отрицательного числа
6. если получим 0 - на этом месте стоит 1, если вычесть нельзя - стоит 0.
1
 Аватар для Mawrat
13117 / 5898 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
06.02.2010, 16:32
Цитата Сообщение от Inadequate Посмотреть сообщение
N - это и не заданное количество цифр. N - это порядковый номер номер цифры, которую необходимо найти
Миш, я когда писал свой пост, то уточнил это:
Цитата Сообщение от Mawrat Посмотреть сообщение
Но ведь, как раз N - это и есть наперёд заданное количество цифр (интересующих нас цифр) в этом числе
Lexus_ilia видимо не обратил на это внимание.
Цитата Сообщение от alexevt
не пойму, в чём сложность-то? я же уже писал общий принцип
Всё верно, Alexevt об этом уже писал в начале обсуждения - просто народ видимо не прочитал.
Но опять остаётся вопрос о времени выполнения. Я уже упоминал - такой подсчёт может потребовать около полутора миллиародов лет.
Цитата Сообщение от Inadequate Посмотреть сообщение
Что касается ввода N<10^50 то, я думаю, что тут ТС где-то накосячил с условием
Да, видимо, именно так - неверное условие.
0
 Аватар для Astonjke
29 / 29 / 18
Регистрация: 21.12.2009
Сообщений: 79
06.02.2010, 19:28  [ТС]
Условие правильное, я уточнял. Знаю, что "такой подсчёт может потребовать около полутора миллиародов лет"... Что вы предлагаете мне делать?
0
 Аватар для Mawrat
13117 / 5898 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
06.02.2010, 21:37
Предложение такое. Надо реализовать 2 операции с "длинными" числами - сложение и сравнение. Написать программу расчёта. А затем запустить расчёт, скажем, при N = 10^7. При этом показать время выполнения. Далее подсчитать эмпирически время выполнения при N = 10^50.
Таким образом будет реализован алгоритм (т. е. написана программа) плюс редоставлен прогноз о времени выполнения для очень больших чисел. Думаю, препода это устроит. Возможно именно такая "тайная" задумка и была - дать прочувствовать, что такое циклы обработки больших чисел.
И результаты надо продемонстрировать преподу до официальной сдачи - мало-ли что...
1
 Аватар для Astonjke
29 / 29 / 18
Регистрация: 21.12.2009
Сообщений: 79
27.02.2010, 22:38  [ТС]
Вот правильное решение:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
program first_2;
uses crt;
 
const
  max_n_digits=200;
type
  long_number=array[1..max_n_digits] of byte;
 
{readln(a);}
procedure long_input(var a:long_number;var aa:longint);
var
  s:string;
  i:longint;
  err:integer;
begin
  readln(s);
  fillchar(a,sizeof(a),0);
  for i:=1 to length(s) do
    val(s[i],a[length(s)+1-i],err);
  aa:=1;
  for i:=2 to max_n_digits do
    if a[i]>0 then aa:=i;
end;
 
{a:=new_value;}
procedure long_create(var a:long_number;var aa:longint;new_value:string);
var
  i:longint;
  err:integer;
begin
  fillchar(a,sizeof(a),0);
  for i:=1 to length(new_value) do
    val(new_value[i],a[length(new_value)+1-i],err);
  aa:=1;
  for i:=2 to length(new_value) do
    if a[i]>0 then aa:=i;
end;
 
{a:=a+1;}
procedure long_add1(var a:long_number; var aa:longint);
var
  i:longint;
  perenos:byte;
begin
  perenos:=1;
  i:=1;
  while perenos=1 do begin
    if a[i]<9
      then begin inc(a[i]); perenos:=0; end
      else begin a[i]:=0; end;
    inc(i);
  end;
  while (a[aa+1]>0)and(aa<max_n_digits) do
    inc(aa);
end;
 
{c:=a+b;}
procedure long_add(a,b:long_number; var c:long_number; aa,bb:longint; var cc:longint);
var
  i,max:longint;
  perenos:byte;
begin
  fillchar(c,sizeof(c),0);
  perenos:=0;
  if aa>bb
    then max:=aa
    else max:=bb;
  i:=1;
  while (i<=max)or(perenos>0) do begin
    c[i]:=a[i]+b[i]+perenos;
    perenos:=c[i] div 10;
    c[i]:=c[i] mod 10;
    inc(i);
  end;
  cc:=i;
end;
 
{c:=a-b; (a>b)}
procedure long_sub(a,b:long_number; var c:long_number; aa,bb:longint; var cc:longint);
var
  i:longint;
  zapozich:byte;
  digitnew:integer;
begin
  fillchar(c,sizeof(c),0);
  zapozich:=0;
  i:=1;
  while i<=aa do begin
    digitnew:=a[i]-b[i]-zapozich;
    zapozich:=0;
    while digitnew<0 do begin
      inc(digitnew,10);
      inc(zapozich);
    end;
    c[i]:=digitnew mod 10;
    inc(i);
  end;
  while c[i]=0 do
    dec(i);
  cc:=i;
end;
 
{a:=a*b;}
procedure long_mul(var a,b:long_number;var aa,bb:longint);
var
  i_a,i_b,k:longint;
  rez:long_number;
  perenos:longint;
begin
  fillchar(rez,sizeof(rez),0);
  for i_a:=1 to aa do begin
    perenos:=0;
    for i_b:=1 to bb do begin
      k:=(i_a+i_b-1) mod max_n_digits;
      inc(rez[k],a[i_a]*b[i_b]+perenos);
      perenos:=rez[k] div 10;
      rez[k]:=rez[k] mod 10;
    end;
    while perenos<>0 do begin
      k:=(k+1) mod max_n_digits;
      rez[k]:=perenos mod 10;
      perenos:=perenos div 10;
    end;
  end;
 
  k:=aa+bb;
  a:=rez;
  while (a[k]=0)and(k>1) do dec(k);
  aa:=k;
end;
 
{a:=a*2;}
procedure long_mul2(var a:long_number; var aa:longint);
var
  i:longint;
  perenos:byte;
begin
  perenos:=0;
  i:=1;
  while (i<=aa)or(perenos>0) do begin
    a[i]:=a[i]*2+perenos;
    perenos:=a[i] div 10;
    a[i]:=a[i] mod 10;
    inc(i);
  end;
  aa:=i;
end;
 
{a:=a div 2;}
procedure long_div2(var a:long_number; var aa:longint);
var
  ostacha:longint;
  i:longint;
begin
  ostacha:=0;
  for i:=aa downto 1 do begin
    ostacha:=a[i]+ostacha*10;
    a[i]:=ostacha div 2;
    ostacha:=ostacha mod 2;
  end;
  while (a[aa]=0)and(aa>1) do
    dec(aa);
end;
 
{a>=<b}
function long_cmp(a,b:long_number; aa,bb:longint):integer;
var
  i,max:longint;
begin
  if aa>bb
    then max:=aa
    else max:=bb;
  long_cmp:=0;
  i:=max;
  while (a[i]=b[i])and(i>1) do
    dec(i);
  if a[i]<b[i] then long_cmp:=-1;
  if a[i]>b[i] then long_cmp:=1;
end;
 
var
  f:text;
  s:long_number;ss:longint;
  a,b,c,d:long_number;aa,bb,cc,dd:longint;
  odinichka:long_number;odinichka_dlina:longint;
begin
  clrscr;
  write('n=');
  long_input(s,ss);
 
  long_mul2(s,ss);
  long_create(a,aa,'1');
  long_create(b,bb,'20000000000000000000000000');
  long_create(odinichka,odinichka_dlina,'1');
  repeat
    long_add(a,b,c,aa,bb,cc);
    long_div2(c,cc);
    d:=c;dd:=cc;
    long_add1(d,dd);
    long_mul(d,c,dd,cc);
    if long_cmp(d,s,dd,ss)>0 {d>s}
      then begin b:=c; bb:=cc; end
      else begin a:=c; aa:=cc; end;
    long_sub(b,a,d,bb,aa,dd);
  until long_cmp(d,odinichka,dd,odinichka_dlina)<=0; {d<='1'}
  d:=a;dd:=aa;
  long_add1(d,dd);
  long_mul(d,a,dd,aa);
  writeln('Solution is in file "first.sol"');
  assign(f,'first.sol');
  rewrite(f);
  if long_cmp(d,s,dd,ss)=0 {d=s}
    then writeln(f,1)
    else writeln(f,0);
  close(f);
  readkey;
end.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.02.2010, 22:38
Помогаю со студенческими работами здесь

Дано двухзначное число. Найти число десятков, число единиц в нем, произведение его цифр
Помогите плиз=)) Дано двухзначное число. Найти число десятков ,число едениц в нем, произвеление его цыфр

Выяснить, какое число встречается в массиве раньше – число Фибоначчи или простое число
Дан натуральный массив A, состоящий из натуральных чисел. Выяснить, какое число встречается раньше – число Фибоначчи или простое число....

Данно вещественное число X. Найти в нем первое число десятка, число десятых долей.
помогите плз решить Данно вещественное число X. Найти в нем первое число десятка, число десятых долей.

Загадано целое число из интервала [A,B]. Написать программу, которая за минимальное число вопросов отгадает это число
Я загадаю целое число из интервала . Напишите программу, которая за минимальное число вопросов отгадает это число. Играть будем так. Я...

Вводится число N необходимо вывести число NN, то есть приписать к N такое же число. Например, мы вводим 984, а выводится
Вводится число N необходимо вывести число NN, то есть приписать к N такое же число. Например, мы вводим 984, а выводится 984984


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации: В классе Работник добавить: накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни коэффициентПрезентеизма — снижает продуктивность. . .
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день. Для работы необходим браузер,. . .
Модель здравосохранения 16. Слишком хорошие и здоровые сотрудники уходят, недовольные зарплатой
anaschu 23.05.2026
Отладка увольнений и настройка производительности Сегодня во второй половине дня разобрались с механикой увольнений и настроили коэффициент сложности заданий. Вот что было сделано. . . .
Как я стал коммунистом))) Модель сохранения здоровья сотрудников, запись блога номер 15
anaschu 23.05.2026
Внезапно хорошее здоровье сотрудников не нужно капиталистам?))
Модель здравоСохранения 15. Как мы чинили AnyLogic модель рабочего коллектива: сочленение диаграммы состояний болезней и поломок в ресурспул
anaschu 23.05.2026
Как мы чинили AnyLogic модель рабочего коллектива Сегодня разобрались с пятью багами, из-за которых модель либо падала с ошибкой, либо давала совершенно бессмысленные результаты. Каждый баг был. . .
Диалоги с ИИ
zorxor 23.05.2026
Насколько я понимаю - Вы - Искусственный Интеллект. Это так? Да, всё верно. Я — искусственный интеллект. Я представляю собой большую языковую модель, созданную для помощи в самых разных задачах. . . .
Модель здравосохранения 14. Собираем всю модель вместе.
anaschu 22.05.2026
Модель собрана. В будущих постах на видео я покажу, как она работает. В этом посте запускаем её, проверяем результаты и разбираем что можно с ней делать дальше. Перед запуском проверяем. . .
Модель здравоохранения 13. Добавление самой системы здравоохранения.
anaschu 22.05.2026
В предыдущем посте мы настроили болезни. Теперь добавим события, которые управляют здоровьем всего коллектива, а также настроим рабочий график и расчёт финансов. В Main создаём четыре события. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru