P151PROH spoj – Số ma thuật

Nguồn đề bài: http://vn.spoj.com/PTIT/problems/P151PROH/

1. Đề bài P151PROH spoj

Một số ma thuật là số mà được ghép bởi các số 1, 14, 144. Số ma thuật không nhất thiết phải được ghép bởi cả 3 số trên. Các bạn giúp kiểm tra giúp xem một số có là số ma thuất không nhé!

Input

Một dòng duy nhất chứa số n (1 <= n <= 10^9).

Output

In ra “YES” nếu n là số ma thuật và “NO” trong trường hợp ngược lại.

Example

Test 1:

Input:

114144
Output:

YES

Test 2:

Input:

111111

Output:

YES

Test 3;

Input:

441231

Output:

NO

2. Code tham khảo P151PROH spoj

const   fi='';
type    data=longint;
var
        f:text;
        s:string;

procedure docfile;
var     i,j:data;
begin
        assign(f,fi); reset(f);
        readln(f,s);
        close(f);
end;

procedure xuli;
var     i,j:data;
begin
        i:=length(s);
        repeat
                if i=0 then break;
                if (length(s)>=3) and (s[i-2]+s[i-1]+s[i]='144') then
                        begin
                                i:=i-3;
                                continue;
                        end;
                if (length(s)>=2) and (s[i-1]+s[i]='14') then
                        begin
                                i:=i-2;
                                continue;
                        end;
                if (length(s)>=1) and (s[i]='1') then
                        begin
                                i:=i-1;
                                continue;
                        end;
                writeln('NO');
                exit;
        until FALSE;
        writeln('YES');
end;

begin
        docfile;
        xuli;
end.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *