Editorial for First Number


Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.

Lưu ý: Các code mẫu dưới đây chỉ mang tính tham khảo và có thể không AC được bài tập này

Code mẫu của flashmt

const max=100000;
var a:array[1..5*max] of byte;
    n,i,num,re:longint;
    s:string;
    l:byte;

procedure init;
var i:longint; s:string; l,k:byte;
begin
     fillchar(a,sizeof(a),0);
     num:=0;
     for i:=1 to n do
     begin
          str(i,s);
          l:=length(s);
          for k:=1 to l do
          begin
               num:=num+1;
               a[num]:=ord(s[k])-48;
          end;
     end;
end;

procedure pr;
var i:longint; j:byte; kt:boolean;
begin
        for i:=1 to num-l+1 do
        begin
                for j:=1 to l do
                begin
                     kt:=(a[i+j-1]=ord(s[j])-48);
                     if not kt then break;
                end;
                if kt then break;
        end;
        re:=i;
end;

begin
     read(n);
     init;
     str(n,s);
     l:=length(s);
     pr;
     write(re);
end.

Code mẫu của happyboy99x

#include<cstdio>
#include<cstring>

char s[500000], t[10], *p = s;
int n, k;

int main() {
    scanf("%d", &n);
    for(int i = 1; i <= n; p += k) sprintf(p, "%d%n", i++, &k);
    sprintf(t, "%d", n);
    printf("%d\n", strstr(s, t) - s + 1);
    return 0;
}

Code mẫu của ladpro98

program mdigits2;
uses    sysutils;
var     s:ansistring;
        i,n :longint;
begin
        readln(n);
        for i:=1 to n do
        s:=s+inttostr(i);
        write(pos(inttostr(n),s));
end.

Code mẫu của RR

var
  n:longint;
  ss,s:ansistring;
begin
  s:='';
  for n:=1 to 100000 do
    begin
      str(n,ss);
      s:=s+ss;
    end;
  readln(ss);
  writeln(pos(ss,s));
end.

Code mẫu của hieult

#include <stdio.h>
//#include <conio.h>

int s[500010],n,b[10],a[10];

int main()
{
    int u = 0,t,v;
    scanf("%d",&n);
    for(int i = 1;i<=n;i++)
    {
        t = i;v=0;
        while(t>0)
        {
            v++;
            a[v]=t%10;
            t = t/10;
        }
        for(int j = 1;j<=v;j++)
            s[u+j] = a[v+1-j];
        u = u+v;

    } 
    v =0;
    t = n;  
    while(t>0)
        {
            v++;
            b[v]=t%10;
            t = t/10;
        }
        for(int i = 1;i<=v;i++)
       a[i] = b[1+v-i];
    for(int i = 1;;i++)
    {
        int flag = 0;
        for(int j = 0;j<v;j++)
        {
            if(s[i+j]!= a[j+1])
            {
                flag = 1;
                break;
            }
        }
        if(flag ==0)
        {
            printf("%d",i);
            break;
        }
    }
    //getch();
}

Code mẫu của ll931110

{$H+}
{$MODE DELPHI}
Program MDIGITS2;
Const
  input  = '';
  output = '';
Var
  n: integer;
  s: string;

Procedure init;
Var
  f: text;
  i: integer;
  k: string;
Begin
  s:= '';
  Assign(f, input);
    Reset(f);

  Readln(f, n);
  For i:= 1 to n do
    Begin
      str(i,k);
      s:= s + k;
    End;

  Close(f);
End;

Procedure solve;
Var
  f: text;
  k: string;
Begin
  str(n,k);

  Assign(f, output);
    Rewrite(f);
    Writeln(f, pos(k,s));
  Close(f);
End;

Begin
  init;
  solve;
End.

Code mẫu của skyvn97

var
    n:longint;
    s,t:ansistring;
    i:longint;
begin
    readln(n);
    s:='';
    for i:=1 to n do
        begin
            str(i,t);
            s:=s+t;  
        end;
    str(n,t);
    write(pos(t,s));
end.

Code mẫu của khuc_tuan

//{$APPTYPE CONSOLE}
 {$MODE DELPHI}

uses
    SysUtils;

var
    s : ansistring;
    n, i : integer;
begin
    read(n);
    for i:=1 to n do
        s := s + IntToStr(i);
    writeln(strpos( PChar(s), PChar(IntToStr(n))) - PChar(s) + 1);
end.

Comments

Please read the guidelines before commenting.


There are no comments at the moment.