Dãy số Hamming Dãy số nguyên dương tăng dần trong đó, phần tử đầu tiên là ????1 = 1, các phần tử tiếp theo có ước nguyên tố của mỗi số không quá 5 được

Dãy số Hamming
Dãy số nguyên dương tăng dần trong đó, phần tử đầu tiên là ????1 = 1, các phần tử tiếp theo có
ước nguyên tố của mỗi số không quá 5 được gọi là dãy hamming. Như vậy, 10 = 2 x 5 sẽ là một số trong
hãy Hamming, còn 26 = 2 x 13 không thuộc dãy hamming.
Phần đầu của dãy Hamming là: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15…..
Yêu cầu: Cho số nguyên ???? (???? ≤ 1018). Hãy kiểm tra xem nó có thuộc dãy số Hamming?
Dữ liệu: Vào từ file văn bản HAMMING.INP:
Gồm nhiều dòng, mỗi dòng ghi một số nguyên x.
Kết quả: Ghi ra file văn bản HAMMING.OUT: In ra YES/NO tương ứng với mỗi số x trong file Input
Có/không thuộc dãy Hamming?
Ví dụ:
HAMMING.INP HAMMING.OUT
11 NO
1 YES
2 YES
6 YES
7 NO
8 YES
9 YES
10 YES
11 NO
12 YES
13 NO
14 NO

0 bình luận về “Dãy số Hamming Dãy số nguyên dương tăng dần trong đó, phần tử đầu tiên là ????1 = 1, các phần tử tiếp theo có ước nguyên tố của mỗi số không quá 5 được”

  1. Đã sửa lại đúng với yêu cầu đề bài @_@

    const fi=’haming.inp’;
          fo=’haming.out’;
    var n:array [1..10000] of int64;
        dem,i:byte;
    begin
            assign(input,fi);
            reset(input);
            dem:=1;
            while not eof do
                    begin
                            readln(n[dem]);
                            inc(dem);
                    end;
            close(input);
            for i:=1 to dem-1 do
            begin
                    while n[i] mod 2 = 0 do
                            n[i]:= n[i] div 2;
                    while n[i] mod 3 = 0 do
                            n[i]:= n[i] div 3;
                    while n[i] mod 5 = 0 do
                            n[i]:= n[i] div 5;
            end;
            assign(output,fo);
            rewrite(output);
            for i:=1 to dem-1 do
                    if n[i]>1 then writeln(‘NO’) else writeln(‘YES’);
            close(output);
    end.

    Bình luận

Viết một bình luận