Buatlah pseudocode untuk permasalahan berikut ini:
Diberikan sebuah string S yang karakternya hanya berupa digit-digit angka.
| Contoh Masukan | Contoh Keluaran | Catatan |
| 0 | YA | 0 adalah angka kelipatan 25 |
| 000000000 | YA | 000000000 adalah angka kelipatan 25 |
| 521 | YA | 521 bisa ditukar karakter-karakternya menjadi 125 yang merupakan angka kelipatan 25 |
| 659 | TIDAK | 659 bisa ditukar karakter-karakternya menjadi 569, 596, 659, 695, 956, dan 965, tetapi tidak ada yang merupakan angka kelipatan 25 |
| 10 | TIDAK | |
| 010 | YA | 010 menjadi 100 |
| 758 | YA | 758 menjadi 875 |
| 0561 | YA | 0561 menjadi 1650 atau 6150 |
| 1243456789 | YA | 123456789 salah satunya menjadi 987614325 |
| 123406789 | TIDAK |
var
s:string;
a,b,i:integer;
c:array[0..9] of integer;
begin
readln(s);
for i:= 1 to length(s) do
begin
val(s,a,b);
inc(c[a]);
end;
if (c[0]>=2) or (c[2]>=1 and c[5]>=1) or (c[7]>=1 and c[5]>=1) or (c[0]=1 and length(s)=1) then
writeln('YA') else writeln('TIDAK');
end.
misalkan ni, cari bilangan kelipatan 25 di antara 0 - 100
hasilnya : 0, 25, 50, 75, 100
nah dari situ aku bisa lihat bahwa, ciri kelipatan 25 adalah, 0 saja tanpa ada embel, 0 lebih dari 2, ada 2 dan 5, ada 5 dan 0, ada 7 dan 5.
jadi 430 bukan merupakan kelipatan 25
kira2 pseudocodepascalnya
var
s : string;
nol1,nol2,dua,lima,tujuh : boolean;
i : integer;
begin
read(s);
nol1:=false; nol2 :=false; dua:=false; lima:=false; tujuh:=false;
for i := 1 to length(s) do begin
if (s[i]='7') then tujuh:=true
else if (s[i]='5') then lima:=true
else if (s[i]='2') then dua:=true
else if (s[i]='0') and (nol1=false) then nol1:=true
else if (s[i]='0') and (nol1=true) then nol2:=true;
end;
if (length(s)=1) and nol1 then writeln('YA')
else if nol1 and nol2 then writeln('YA')
else if dua and lima then writeln('YA')
else if tujuh and lima then writeln('YA')
else if lima and nol1 then writeln('YA')
else writeln('TIDAK');
end.
kalo salah mohon dikoreksi
Masuk untuk menulis jawaban
Ciri bilangan habis dibagi 25 :
2 angka terakhirnya itu 00, 25, 50, atau 75.
Ideku sih tinggal ngecek di string itu ada salah satu kelompok angka diatas apa enggak (00, 25, 50, atau 75), kalau ada berarti output "YA", kalo enggak ya "TIDAK". Tapi khusus untuk input '0', langsung output "YA"
ya nggak, maksudnya input 0 itu kalo inputnya angka '0' doang
dan 430 kan 2 angka terakhirnya bukan 00,25,50,ataupun 75
CMIIW
#include <bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
string s;
cin >> s;
vi num(10, 0);
for(int i = 0; i < s.length(); i++){
num[s[i]-48]++;
}
if((num[0] >= 1 && num[5] >= 1) || (num[7] >= 1 && num[5] >= 1) || (num[2] >= 1 && num[5] >= 1) || (num[0] >=2) || (s.length() == 1 && num[0] == 1)){
cout << "YA\n";
} else {
cout << "TIDAK\n";
}
return 0;
}
// suatu bilangan dapat di bagi 25 bila mengandung 25, 50, 75, dan 00
// jadi kita hanya perlu mengecek apakah angka tersebut muncul pada bilangan kita
// tapi kita juga harus mengingat kalau bilangan 0 dapat dibagi 25
kalau misal 430 apakah langsung output YA ?