02/10/2018, 14:01
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 ...
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.
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 | 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. |