Đến nội dung

DrPlayBoy

DrPlayBoy

Đăng ký: 13-04-2015
Offline Đăng nhập: 15-04-2015 - 18:25
-----

Trong chủ đề: Lập trình Pascal

13-04-2015 - 09:31

Diễn đàn này hay và bổ ích quá! cứ thank ban trước đã. Mình test the xem nha

Còn bài 5 đề rõ rồi mà trong ví dụ đưa ra nếu đưa 7 lên trên đầu ta được số 714285 số này = 142857 *5

 

 

Bác nào siêu pascal hộ em lời giải nha! Thanhk!

Bài 1: Số đối xứng 

Tìm các số nhiên N (100<N<47 000) thoả mãn: N và N2 đều là số đối xứng (Số đối xứng là số nếu viết các chữ số của nó theo thứ tự ngược lại thì giá trị của nó không thay đổi, ví dụ số 10301 hay 2332 là các số đối xứng).

          Kết quả đưa ra màn hình gồm một số dòng, trên mỗi dòng ghi 2 số N và N2 , các số cách nhau tối thiểu một dấu cách.

Bài 2: Số chữ số 0 tận cùng

          Tính số chữ số 0 tận cùng của N! = 1*2*3*...*N, với số nguyên dương N109.

          N nhập từ bàn phím, kết quả đưa ra màn hình gồm một số nguyên là số chữ số 0 tận cùng của N!  đã tìm được.

          Ví dụ: N=12 , kết quả đưa ra màn hình là 2.

Bài 3: Các số khác nhau 

Cho dãy gồm N số nguyên dương (N≤ 1000). Hãy kiểm tra xem có bao

nhiêu số khác nhau trong dãy.

·          Dữ liệu vào: Từ tệp DAYSO.INP gồm dòng đầu là số N, trong các dòng sau ghi các số của dãy, mỗi số cách nhau tối thiểu một dấu cách.

·          Kết quả: Ghi ra tệp DAYSO.OUT dòng đầu ghi số nguyên K, là số lượng các số khác nhau trong dãy. Trong các dòng sau ghi K số khác nhau tìm được trong dãy, mỗi dòng ghi 15 số.

          Ví dụ

DAYSO.INP

10

5 8 12 5 6 8 5 8 4 9

DAYSO.OUT

6

5 8 12 6 4 9

      

 Bài 4. Tổng các số 

Cho số nguyên N (1 ≤ N ≤ 109). Bằng cách sử dụng các chữ số liên tiếp của N (viết trong hệ thập phân), ta thu được các số nguyên khác nhau. Hãy tính tổng của các số nguyên này.

Ví dụ: Nếu N = 202, có thể thu được các số: 2, 0, 2, 20, 02, 202. Bỏ đi các số nguyên trùng nhau ta được các số: 2, 0, 20, 202. Khi đó tổng cần tìm sẽ là 2+0+20+202=224.

·        Dữ liệu vào: Từ tệp SUM.INP, gồm 10 dòng, mỗi dòng là một số nguyên

N (điều kiện : 1 ≤ N ≤ 109). ;

·        Kết quả: Đưa ra tệp SUM.OUT, gồm 10 dòng, mỗi dòng là tổng tìm được

tương ứng với các dòng trong tệp SUM.INP.

SUM.INP

202

6742

...

SUM.OUT

224

8360

...

Bài 5: Đổi chỗ 

Tìm số tự nhiên nhỏ nhất có chữ số hàng đơn vị là D, sao cho khi chuyển chữ số hàng đơn vị lên vị trí trước chữ số đầu tiên của số đó thì được số mới gấp K lần số cũ.

·          Dữ liệu vào: Nhập từ tệp MOVE.INP gồm 2 số nguyên D và K, các số cách nhau tối thiểu một dấu cách.

·          Kết quả: Ghi vào tệp MOVE.OUT số tìm được, hoặc -1 nếu không tìm được số thoả mãn.

Ví dụ

MOVE.INP

7  5

MOVE.OUT

142857

 

Bài 4:

Var n, m: longint;

    st, st1: string;

    fin, fou: text;

    A: Array [1..20] of string;

    i, j, k, z, code: integer;

    h: boolean;

BEGIN

Assign(fin,'F:/SUM.INP');

Reset(fin);

Readln(fin,n);

Str(n,st);

Begin

m:=0;

For i:=1 to length(st) do

 Begin

 k:=0;

 For j:=1 to length(st)-i+1 do

  Begin

  st1:=copy(st,j,i);

  If st1[1] <> '0' then

   Begin

   h:=true;

   For z:=1 to k do

    If st1 = A[z] then

     Begin

     h:=false;

     break;

     End;

   If h = true then

    Begin

    k:=k+1;

    A[k]:=st1;

    End;

   End;

  End;

 For j:=1 to k do

  Begin

  val(A[j],n,code);

  m:=m+n;

  End;

 End;

End;

Close(fin);

Assign(fou,'F:/SUM1.OUT');

Rewrite(fou);

Write(fou,m);

Close(fou);

Readln;

END.

 

p/s: chỉ tính được 1 số trong tệp, ai bít tính các số còn lại thì post lên nha!


Trong chủ đề: Lập trình Pascal

13-04-2015 - 09:26

Var n, m: longint;

    st, st1: string;

    fin, fou: text;

    A: Array [1..20] of string;

    i, j, k, z, code: integer;

    h: boolean;

BEGIN

Assign(fin,'F:/SUM.INP');

Reset(fin);

Readln(fin,n);

Str(n,st);

Begin

m:=0;

For i:=1 to length(st) do

 Begin

 k:=0;

 For j:=1 to length(st)-i+1 do

  Begin

  st1:=copy(st,j,i);

  If st1[1] <> '0' then

   Begin

   h:=true;

   For z:=1 to k do

    If st1 = A[z] then

     Begin

     h:=false;

     break;

     End;

   If h = true then

    Begin

    k:=k+1;

    A[k]:=st1;

    End;

   End;

  End;

 For j:=1 to k do

  Begin

  val(A[j],n,code);

  m:=m+n;

  End;

 End;

End;

Close(fin);

Assign(fou,'F:/SUM1.OUT');

Rewrite(fou);

Write(fou,m);

Close(fou);

Readln;

END.

 

 

p/s: Chỉ tính được 1 số trong tệp, ai biết làm thế nào tính các số còn lại thì post lên! ths :D