Решение задач
|
|
Admin | Дата: Среда, 20.10.2010, 22:53 | Сообщение # 31 |
Forum member
Группа: Admin
Зарегистрирован: 24.02.2010
Откуда: Цюрупинск
Пол: Мужчина
Сообщений: 691
Статус: Вне сайта
| Дано натуральное число n>1. Найти наибольшее целое k, при котором 4k<= n. Вход: 28 Выход: 2 Code 01 program Pr3019; 02 {$APPTYPE CONSOLE} 03 uses 04 SysUtils; 05 06 var 07 i,tmp,N: integer; 08 begin 09 i:=-1; 10 tmp:=1; 11 ReadLn(N); 12 repeat 13 tmp:=tmp*4; 14 inc(i); 15 until tmp > N; 16 WriteLn(i); 17 ReadLn; 18 end.
|
|
|
|
Admin | Дата: Среда, 20.10.2010, 22:53 | Сообщение # 32 |
Forum member
Группа: Admin
Зарегистрирован: 24.02.2010
Откуда: Цюрупинск
Пол: Мужчина
Сообщений: 691
Статус: Вне сайта
| Простое число называется числом Мерсена, если оно может быть представлено в виде 2p-1, где p - тоже простое число. Дано число N. Найти количество чисел Мерсена в интервале от 2 до N. Вход: 1000 Выход: 4Code 01 program Pr4011; 02 {$APPTYPE CONSOLE} 03 uses 04 SysUtils; 05 var 06 i,j,A,N,p,Res,x: integer; 07 begin 08 ReadLn(N); 09 Res:=0; 10 for i:=2 to N do 11 begin 12 A:=i; 13 j:=2; 14 while A mod j <> 0 do j:=j+1; 15 if A=j then 16 begin 17 P:=2; 18 Repeat 19 j:=2; 20 while P mod j <> 0 do j:=j+1; 21 if P=j then 22 begin 23 X:=1; 24 for j:=1 to P do X:=2*X; 25 X:=X-1; 26 end; 27 inc(P); 28 until X >= A; 29 if x=a then inc(Res); 30 end; 31 end; 32 WriteLn(Res); 33 ReadLn; 34 end.
|
|
|
|
Admin | Дата: Среда, 20.10.2010, 22:54 | Сообщение # 33 |
Forum member
Группа: Admin
Зарегистрирован: 24.02.2010
Откуда: Цюрупинск
Пол: Мужчина
Сообщений: 691
Статус: Вне сайта
| Дана строка. Словом в ней назовем последовательность подряд идущих латинских букв (больших или маленьких). Найти количество слов, начинающихся с буквы а. Вход: abc12db1a 1asa Выход: 3 Code 01 program Pr5022; 02 {$APPTYPE CONSOLE} 03 uses 04 SysUtils; 05 var 06 s,st: string; 07 i,sc,wc,l,res: integer; 08 begin 09 readln(s); 10 sc:=0; 11 wc:=0; 12 st:=''; 13 Res:=0; 14 l:=length(s); 15 for i:=1 to l do 16 begin 17 case s[i] of 18 'A'..'Z': st:=st+s[i]; 19 'a'..'z': st:=st+s[i]; 20 else if Length(st) > 0 then 21 begin 22 if st[1]='a' then inc(Res); 23 st:=''; 24 end; 25 26 end; 27 end; 28 if Length(st) > 0 then if st[1]='a' then inc(Res); 29 writeln(Res); 30 readln; 31 end.
|
|
|
|
Admin | Дата: Среда, 20.10.2010, 22:54 | Сообщение # 34 |
Forum member
Группа: Admin
Зарегистрирован: 24.02.2010
Откуда: Цюрупинск
Пол: Мужчина
Сообщений: 691
Статус: Вне сайта
| Дана последовательность целых чисел ai. Построить новую последовательность, содержащую те элементы, наибольший общий делитель у которых с предыдущим значением равен 1. Построение новой последовательности начинать со второго элемента. Вход: 8 4 7 3 16 18 0 Выход: 7 3 16 Code 01 program Pr6008; 02 {$APPTYPE CONSOLE} 03 uses 04 SysUtils; 05 var 06 vvod: array [1..255] of integer; 07 c,i,a,j,x,y,z: integer; 08 begin 09 c:=1; 10 repeat 11 readln(a); 12 vvod[c]:=a; 13 inc(c); 14 until a=0; 15 for i:=2 to c-2 do 16 begin 17 x:=vvod[i-1]; 18 y:=vvod[i]; 19 if x < y then z:=x 20 else z:=y; 21 j:=1; 22 repeat 23 inc(j); 24 until (x mod j = 0) and (y mod j = 0) or (j > z); 25 if j > z then WriteLn(y); 26 end; 27 readln; 28 end.
|
|
|
|
Admin | Дата: Среда, 20.10.2010, 22:55 | Сообщение # 35 |
Forum member
Группа: Admin
Зарегистрирован: 24.02.2010
Откуда: Цюрупинск
Пол: Мужчина
Сообщений: 691
Статус: Вне сайта
| Последовательность т.н. треугольных чисел определяется следующим образом: первый член последовательности равен 1, второй на 2 больше первого, третий на 3 больше второго и т.д. Т.е. треугольными являются числа 1,3,6,10,15,... Дана последовательность целых чисел ai. Построить новую последовательность, содержащую треугольные числа из данной последовательности. Вход: 5 1 7 120 210 0 Выход: 1 120 210 Code 01 program Pr6011; 02 {$APPTYPE CONSOLE} 03 uses 04 SysUtils; 05 var 06 vvod: array [1..255] of integer; 07 c,i,a,j,x,y,z: integer; 08 begin 09 c:=1; 10 repeat 11 readln(a); 12 vvod[c]:=a; 13 inc(c); 14 until a=0; 15 for i:=1 to c-2 do 16 begin 17 a:=vvod[i]; 18 z:=0; 19 for j:=1 to a do 20 begin 21 z:=z+j; 22 if a = z then writeln(a); 23 end; 24 end; 25 readln; 26 end.
|
|
|
|
Admin | Дата: Среда, 20.10.2010, 22:55 | Сообщение # 36 |
Forum member
Группа: Admin
Зарегистрирован: 24.02.2010
Откуда: Цюрупинск
Пол: Мужчина
Сообщений: 691
Статус: Вне сайта
| Дано число. Верно ли, что сумма его цифр, не считая семерок, является простым числом. 0 и 1 не являются простыми числами. Строками не пользоваться. Вход: 1772774 Выход: yes Code 01 program Pr200000; 02 {$APPTYPE CONSOLE} 03 uses 04 SysUtils; 05 var 06 i,j,A,N,sum,tmp: integer; 07 s: String; 08 begin 09 ReadLn(N); 10 A:=N; 11 Sum:=0; 12 repeat 13 tmp:= A mod 10; 14 if tmp <> 7 then Sum:=Sum + tmp; 15 A:=A div 10; 16 until A = 0; 17 i:=2; 18 if Sum > 1 then 19 begin 20 while Sum mod i <> 0 do i:=i+1; 21 if Sum = i then s:='yes' 22 else s:='no'; 23 end else S:='no'; 24 WriteLn(S); 25 ReadLn; 26 end.
|
|
|
|
Admin | Дата: Среда, 20.10.2010, 22:55 | Сообщение # 37 |
Forum member
Группа: Admin
Зарегистрирован: 24.02.2010
Откуда: Цюрупинск
Пол: Мужчина
Сообщений: 691
Статус: Вне сайта
| Дано число. Найти наибольший общий делитель данного числа и суммы его цифр. Вход: 55 Выход: 5Code 01 program Pr200010; 02 {$APPTYPE CONSOLE} 03 uses 04 SysUtils; 05 var 06 i,j,A,N,sum,tmp: integer; 07 begin 08 ReadLn(N); 09 A:=N; 10 Sum:=0; 11 repeat 12 tmp:= A mod 10; 13 Sum:=Sum + tmp; 14 A:=A div 10; 15 until A = 0; 16 i:=N; 17 repeat 18 Dec(i); 19 until ((N mod i = 0) and (Sum mod i = 0)) or (i = 1); 20 WriteLn(i); 21 ReadLn; 22 end.
|
|
|
|
Admin | Дата: Среда, 20.10.2010, 22:56 | Сообщение # 38 |
Forum member
Группа: Admin
Зарегистрирован: 24.02.2010
Откуда: Цюрупинск
Пол: Мужчина
Сообщений: 691
Статус: Вне сайта
| Дано число. Можно ли его представить в виде произведения двух подряд идущих целых чисел? Вход: 72 Выход: yes Code 01 program Pr200020; 02 {$APPTYPE CONSOLE} 03 uses 04 SysUtils; 05 var 06 i,N,tmp: integer; 07 begin 08 ReadLn(N); 09 i:=1; 10 Repeat 11 tmp:=i*(i+1); 12 inc(i); 13 until (tmp >= N); 14 if tmp = N then WriteLn('yes') 15 else WriteLn('no'); 16 ReadLn; 17 end.
|
|
|
|
Admin | Дата: Среда, 20.10.2010, 22:56 | Сообщение # 39 |
Forum member
Группа: Admin
Зарегистрирован: 24.02.2010
Откуда: Цюрупинск
Пол: Мужчина
Сообщений: 691
Статус: Вне сайта
| Даны целые числа n и k. Найти младшую цифру числа nk (число nk может и не вмещаться в числовую переменную). Вход: 17 1234 Выход: 9 Code 01 program Pr200030; 02 {$APPTYPE CONSOLE} 03 uses 04 SysUtils; 05 var 06 i,N,K,tmp,Res: integer; 07 begin 08 ReadLn(N,K); 09 Res:=1; 10 tmp:=N mod 10; 11 12 for i:=1 to K do 13 begin 14 Res:=Res * Tmp; 15 Res:=Res mod 10; 16 end; 17 writeln(Res); 18 ReadLn; 19 end.
|
|
|
|
Admin | Дата: Среда, 20.10.2010, 22:56 | Сообщение # 40 |
Forum member
Группа: Admin
Зарегистрирован: 24.02.2010
Откуда: Цюрупинск
Пол: Мужчина
Сообщений: 691
Статус: Вне сайта
| Даны числа a и b. Найти в интервале [a;b] число, у квадрата которого наибольшая сумма цифр (если таковых несколько, выводить наименьшее из них). Вход: 10 57 Выход: 43Code 01 program Pr200040; 02 {$APPTYPE CONSOLE} 03 uses 04 SysUtils; 05 var 06 i,A,B,tmp,Res,kv,Sum,x: integer; 07 begin 08 ReadLn(A,B); 09 Sum:=0; 10 Res:=0; 11 tmp:=0; 12 for i:=B downto A do 13 begin 14 kv:=Sqr(i); 15 repeat 16 x:= kv mod 10; 17 Sum:= Sum + x; 18 kv:= kv div 10; 19 until kv = 0; 20 21 if Sum >= tmp then 22 begin 23 Res:=i; 24 tmp:= Sum; 25 end; 26 Sum:=0; 27 end; 28 29 writeln(Res); 30 ReadLn; 31 end.
|
|
|
|