
Порфирий
6 год назад
Все натуральные числа от 1 до N записаны подряд слева направо: 123456789101112...N. Сколько существует способов вычеркнуть все цифры полученного числа, кроме четырёх, чтобы оставшиеся цифры образовали (без перестановок) число 2013?
ОТВЕТЫ

Марианович
Aug 3, 2019
//То чувство, когда 2 часа работал над оптимизацией, а в итоге работает быстрее вариант, который писал 5 минут.
//PascalABC.NET 3.2 сборка 1318
Var
i,j,k,m,n,count:integer;
s,s1:string;
begin
readln(n);
for i:=1 to n do
s+=inttostr(i);
for i:=1 to length(s) do
if (s[i]=2) or (s[i]=0) or (s[i]=1) or (s[i]=3) then s1+=s[i];
s:=s1;
for i:=1 to length(s) do
if s[i]=2 then
for j:=i+1 to length(s) do
if s[j]=0 then
for k:=j+1 to length(s) do
if s[k]=1 then
for m:=k+1 to length(s) do
if s[m]=3 then inc(count);
writeln(count);
end.
Пример ввода:
500
Пример вывода:
23760240
//PascalABC.NET 3.2 сборка 1318
Var
i,j,k,m,n,count:integer;
s,s1:string;
begin
readln(n);
for i:=1 to n do
s+=inttostr(i);
for i:=1 to length(s) do
if (s[i]=2) or (s[i]=0) or (s[i]=1) or (s[i]=3) then s1+=s[i];
s:=s1;
for i:=1 to length(s) do
if s[i]=2 then
for j:=i+1 to length(s) do
if s[j]=0 then
for k:=j+1 to length(s) do
if s[k]=1 then
for m:=k+1 to length(s) do
if s[m]=3 then inc(count);
writeln(count);
end.
Пример ввода:
500
Пример вывода:
23760240
220
Смежные вопросы: