Tin học Tây Sơn

Khai triển Cantor

Go down

Khai triển Cantor

Bài gửi by Admin on Sat Nov 17, 2018 4:37 pm

Khai triển Cantor của số tự nhiên N là biểu diễn số N dưới dạng:
                        N= ak.k! + ak-1.(k-1)! + … + a2.2! + a1.1!
                        Trong đó: 0 ≤ a≤ k và  k!= 1.2.3…(k-1).k
            Viết chương trình liệt kê các hệ số ak, ak-1,…, a3, a2, atrong khai triển Cantor của số tự nhiên N (N<50000) . Các hệ số cách nhau ít nhất một khoảng trắng.
            Yêu cầu:
            ● Dữ liệu vào: File text Cantor.INP chỉ có 1 dòng chứa số nguyên dương N.
            ● Dữ liệu ra: File text Cantor.OUT gồm 2 dòng:
- Dòng 1: Ghi số nguyên dương N.
- Dòng 2: Liệt kê các hệ số ak, ak-1,…, a3, a2, atrong khai triển Cantor của số tự nhiên N. Các hệ số cách nhau ít nhất một khoảng trắng.
            Ví dụ:



Cantor.INP
Cantor.OUT
2014
2014
2  4  3  3  2  0
avatar
Admin
Admin
Admin

Posts : 658
Reputation : -39
Join date : 16/11/2015
Age : 29

Xem lý lịch thành viên http://tinhocts.forumvi.com

Về Đầu Trang Go down

Re: Khai triển Cantor

Bài gửi by tonguyengiahan237 on Wed Nov 21, 2018 4:08 pm

Code:
Program Khai_trien_Cantor;
 Uses crt;
  Var n:longint;
    fi,fo:text;

Procedure Docdl(Var n:longint;Var fi:text);
  Begin
    Assign(fi,'Cantor.INP');
    Reset(fi);
    Read(fi,N);
    Close(fi);
  End;

Function Giai_thua(n:longint):longint;
  Var i:longint;
  Begin
    Giai_thua:=1;
    For i:=2 to n do
    Giai_thua:=Giai_thua*i;
  End;

Procedure Cantor(Var n:longint;Var fo:text);
  Var k,ak:longint;
  Begin
    Assign(fo,'Cantor.OUT');
    Rewrite(fo);
    Writeln(fo,n);
    k:=1;
  While Giai_thua(k)< n do
    k:=k+1;
    k:=k-1;
      Repeat
        ak:=n div Giai_thua(k);
          While ak*Giai_thua(k)>n do
            ak:=ak-1;
            Write(fo,ak,'  ');
            n:=n-ak*Giai_thua(k);
            k:=k-1;
      Until n=0;
        If k>0 then
        For ak:=1 to k do
        Write(fo,'0  ');
    Close(fo);
  End;

  BEGIN
  CLRSCR;
  Docdl(n,fi);
  Cantor(n,fo);
  READLN;
  END.


Được sửa bởi tonguyengiahan237 ngày Thu Nov 22, 2018 2:51 pm; sửa lần 3.
avatar
tonguyengiahan237
Teen Chính hiệu
Teen Chính hiệu

Posts : 28
Reputation : -2
Join date : 06/11/2018
Age : 14
Location : TT Phú Phong Huyện Tây Sơn Tỉnh Bình Định

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Khai triển Cantor

Bài gửi by Nguyễn Văn Biên on Thu Nov 22, 2018 1:50 pm

CODE:
program Cantor;
var fi,fo:text;
n,k,s:word;

function gt(n:byte):word;
var i:byte;
begin
gt:=1;
for i:=2 to n do gt:=gt*i
end;

begin
assign(fi,'Cantor.INP'); reset(fi);
readln(fi,n); close(fi);
assign(fo,'Cantor.OUT'); rewrite(fo);
writeln(fo,n);
k:=1;
while gt(k)<n do inc(k);
dec(k);
repeat
s:=k;
while gt(k)*s>n do dec(s);
write(fo,s,#32);
n:=n-gt(k)*s;
dec(k)
until n=0;
if k>0 then for s:=1 to k do write(fo,0,#32);
close(fo)
end.
avatar
Nguyễn Văn Biên
S-mod
S-mod

Posts : 186
Reputation : 21
Join date : 18/06/2018
Age : 14
Location : ?

Xem lý lịch thành viên https://bien2004official.blogspot.com

Về Đầu Trang Go down

Re: Khai triển Cantor

Bài gửi by Tạ Thúy Phượng on Thu Nov 22, 2018 1:51 pm

code:
Program Cantor;
Uses crt;
 Var n:longint;
   fi,fo:text;
//--------------------------------------------------
Procedure Doc;
Begin
Assign(fi,'CANTOR.INP');
Reset(fi);
Read(fi,N);
Close(fi);
End;
//---------------------------------------
Function gt(n:longint):longint;
Var i:longint;
Begin
       gt:=1;
       For i:=2 to n do
       gt:=gt*i;
 End;
//-------------------------------------
Procedure Cantor;
Var k,tam:longint;
Begin
Assign(fo,'CANTOR.OUT');
   Rewrite(fo);
k:=1;
While gt(k)<n do
   k:=k+1;
   k:=k-1;
   Repeat
       tam:=n div gt(k);
       While tam*gt(k)>n do
               tam:=tam-1;
               Write(fo,tam,#32);
               n:=n-tam*gt(k);
               k:=k-1;
       Until n=0;
   If k>0 then
   For tam:=1 to k do
   Write(fo,'0  ');
Close(fo);
End;
//--------------------------------
 BEGIN
 CLRSCR;
 Doc;
 Cantor;
 READLN;
 END.


Được sửa bởi Tạ Thúy Phượng ngày Thu Nov 22, 2018 2:40 pm; sửa lần 1.
avatar
Tạ Thúy Phượng
Năng động
Năng động

Posts : 63
Reputation : -19
Join date : 18/06/2018
Location : Binh Thuan-Tay Son-Binh Dinh

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Khai triển Cantor

Bài gửi by quantran on Thu Nov 22, 2018 1:52 pm

code:
Program bai;
Var
n:longint;
fi,fo:text;
//-----------------------------------
function gt(p:longint):longint;
var
i:longint;
begin
       gt:=1;
       for i:=2 to p do
               gt:=gt*i;
end;
//----------------------------------
procedure doc(var n:longint; var fi:text);
begin
       assign(fi,'cantro.inp');
       reset(fi);
       read(fi,n);
       close(fi);
end;

//---------------------------------
procedure tim(var n:longint; var fo:text);
Var
k,s:longint;
begin
       assign(fo,'CANTRO.OUT');
       rewrite(fo);
       k:=1;
       while gt(k)<=n do
               k:=k+1;
               k:=k-1;
       repeat
       s:=n div gt(k);
       while s*gt(k)>n do
               s:=s-1;
               write(fo,s,' ');
               n:=n-s*gt(k);
               k:=k-1;
       until n=0;
       if k>0 then
       for s:=1 to k do
               write(fo,'0 ');
               close(fo);
end;
//----------------------------
begin
doc(n,fi);
tim(n,fo);
readln;
end.


Được sửa bởi quantran ngày Thu Nov 22, 2018 2:44 pm; sửa lần 2.
avatar
quantran
Teen cá tính
Teen cá tính

Posts : 73
Reputation : -20
Join date : 18/06/2018
Age : 14
Location : Binh Thuan-Tay Son-Binh Dinh

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Khai triển Cantor

Bài gửi by huynhtanluc on Thu Nov 22, 2018 1:55 pm

Code:
Program cantor;
uses crt;
var n,k,i,s:longint;t1,t2:text;

Function gt(n:longint):longint;
var t:longint;
begin
t:=1;
for i:=2 to n do t:=t*i;
gt:=t;
end;

Procedure doc;
begin
assign(t1,'cantor.inp');
reset(t1);
readln(t1,n);
close(t1);
end;

Procedure inra;
begin
assign(t2,'cantor.out');
rewrite(t2);
writeln(t2,n);
k:=1;
while gt(k)<n do
inc(k);
dec(k);
s:=k;
repeat
s:=n div gt(k);
write(t2,s,#32);
n:=n-gt(k)*s;
dec(k);
until n=0;
if k>0 then
for i:=1 to k do write(t2,0,#32);
close(t2);
end;

Begin
clrscr;
doc;
inra;
readln;
End.





Được sửa bởi huynhtanluc ngày Thu Nov 22, 2018 3:04 pm; sửa lần 2.
avatar
huynhtanluc
Năng động
Năng động

Posts : 61
Reputation : -14
Join date : 18/06/2018

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Khai triển Cantor

Bài gửi by Nguyễn Ngọc Thiên on Thu Nov 22, 2018 2:48 pm

Code:
program gg;
uses crt;
var n:longint;
    fi,fo:text;
 //----------------------

procedure doc;
 begin
  assign(fi,'Cantor.inp');
  reset(fi);
  read(fi,n);
  close(fi);
end;
 //-----------------------
function gt(n:longint):longint;
var i:integer;
 begin
  gt:=1;
  for i:=2 to n do
  gt:=gt*i;
end;
 //-----------------------
procedure Cantor;
var t,k:integer;
 begin
 assign(fo,'Cantor.out');
 rewrite(fo);
 k:=1;
 while gt(k)<n do
                 inc(k);
 k:=k-1;
 Repeat
 t:=k;
 while t*gt(k)>n do
                  t:=t-1;
 write(fo,t,#32);
 n:=n-t*gt(k);
 k:=k-1;
 Until n=0;
 if k>0 then
     for t:=1 to k do
        write(fo,'0');
 close(fo);
end;
 //-----------------
Begin
clrscr;
Doc;
Cantor;
readln;
end.
Very Happy Very Happy Very Happy

-Ngọcc Thiênn-


Được sửa bởi nguyenngocthien ngày Thu Nov 22, 2018 3:01 pm; sửa lần 2.
avatar
Nguyễn Ngọc Thiên
Teen Chính hiệu
Teen Chính hiệu

Posts : 17
Reputation : -4
Join date : 06/11/2018
Age : 13
Location : Bình tường, Tây Sơn, Bình Định

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Khai triển Cantor

Bài gửi by Khách viếng thăm on Thu Nov 22, 2018 2:48 pm

Code:
Program cantor;
 uses crt;
        var n,k,i,s,a:longint;t1,t2:text;

        function gt(n:longint):longint;
        var t:longint;
        begin
        t:=1;
        for i:=2 to n do t:=t*i;
        gt:=t;
        end;

        Procedure doc;
        begin
                assign(t1,'cantor.inp');
                reset(t1);
                readln(t1,n);
        close(t1);
        end;


        procedure tim_a;
        begin
                assign(t2,'cantor.out');
                rewrite(t2);
                i:=1;
                while (gt(i)<=n) do inc(i);
                k:=i;

                repeat
                        k:=k-1;
                        a:=n div gt(k);

                        n:=n-(gt(k)*a);
                        write(t2,a,#32);

                until n=0;
                write(t2,'0');
                close(t2);
        end;


Begin
        clrscr;
        doc;
        tim_a;
        readln;
End.

Khách viếng thăm
Khách viếng thăm


Về Đầu Trang Go down

Re: Khai triển Cantor

Bài gửi by Cao Hải Dương on Thu Nov 22, 2018 2:50 pm

Code:
Program khai_trien_cantor;
Uses crt;
Var fi,fo:text; n,i,k,ak:longint;

Function gt(x:longint):longint;
Var i:longint;
Begin
gt:=1;
For i:=1 to x do gt:=gt*i;
End;

Begin
Clrscr;
Assign(fi,'Cantor.INP');Reset(fi);
Readln(fi,n); Close(fi);
Assign(fo,'Cantor.OUT');Rewrite(fo);
k:=1;
Writeln(fo,n);
While gt(k)<=n do inc(k);
If gt(k)>n then dec(k);
While k>0 do
        Begin
        ak:=n div gt(k);
        n:=n - (ak*gt(k));
        Write(fo,ak,#32);
        dec(k);
        End;
Close(fo);
Readln;
End.
avatar
Cao Hải Dương
Năng động
Năng động

Posts : 56
Reputation : -1
Join date : 18/06/2018
Age : 14
Location : Bình Định

Xem lý lịch thành viên http://starduongdesign.blogspot.com

Về Đầu Trang Go down

Re: Khai triển Cantor

Bài gửi by lohan on Thu Nov 22, 2018 2:58 pm

Code:
program cantor;
 uses crt;
 var n:longint;
    fi,fo:text;

procedure Doc;
 begin
 assign(fi,'Cantor.inp');
 reset(fi);
 read(fi,n);
 close(fi);
 end;

function Gthua(n:longint):longint;
  var i:longint;
 begin
 Gthua:=1;
 for i:=2 to n do
 Gthua:=Gthua*i;
 end;

procedure cantor;
  var k,h:longint;
 begin
 assign(fo,'Cantor.out');
 rewrite(fo);
  k:=1;
 while Gthua(k)<n do
  inc(k);
  dec(k);
 repeat
  h:=n div Gthua(k);
 while Gthua(k)*h>n do
  dec(h);
  Write(fo ,h ,' ');
  n:=n-Gthua(k)*h;
  dec(k);
 until n=0;
  if k>0 then
  for h:=1 to k do
  Write(fo,'0');
 close(fo);
 end;

Begin
 clrscr;
 doc;
 cantor;
 readln;
end.


Được sửa bởi lohan ngày Thu Nov 22, 2018 3:02 pm; sửa lần 1.
avatar
lohan
Teen Chính hiệu
Teen Chính hiệu

Posts : 20
Reputation : -3
Join date : 06/11/2018
Age : 14

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Khai triển Cantor

Bài gửi by mainhatthong2004 on Thu Nov 22, 2018 3:00 pm

thong:
Program cantor;
uses crt;
var n,k,i,s:longint;fi,fo:text;

Function gt(n:longint):longint;
var t:longint;
begin
t:=1;
for i:=2 to n do t:=t*i;
gt:=t;
writeln(t2fo,n);
k:=1;
while gt(k)<n do
inc(k);
dec(k);
repeat
s:=k;
end;
//-------------------------------------------
Procedure doc;
begin
assign(fi,'cantor.inp');
reset(fi);
readln(fi,n);
close(fi);
end;
//---------------------------------------------
Procedure xl;
begin
assign(fo,'cantor.out');
rewrite(fo);
while gt(k)*s>n do
dec(s);
write(fo,s,#32);
n:=n-gt(k)*s;
dec(k);
until n=0;
if k>0 then
for s:=1 to k do write(fo,0,#32);
close(fo);
end;
//------------------------------------------------
Begin
clrscr;
doc;
xl;
readln;
End.


Được sửa bởi mainhatthong2004 ngày Thu Nov 22, 2018 3:05 pm; sửa lần 2.
avatar
mainhatthong2004
Teen cá tính
Teen cá tính

Posts : 76
Reputation : -25
Join date : 18/06/2018

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Khai triển Cantor

Bài gửi by nguyen77 on Thu Nov 22, 2018 3:00 pm

Code:
program bt;
uses crt;
var  i,n,dem,tong:longint;
fi,fo:text;
function gt(x:longint):longint;
var i:longint;
begin
gt:=1;
for i:=1 to x do
        gt:=gt*i;
end;

begin
assign(fi,'cantor.inp');
reset(fi);
readln(fi,n);
close(fi);
assign(fo,'cantor.out');
rewrite(fo);
writeln(fo,n);
dem:=1;
while gt(dem)<n do
inc(dem);
dec(dem);
repeat
tong:=dem;
while gt(dem)*tong>n do
dec(tong);
write(fo,tong,#32);
n:=n-gt(dem)*tong;
dec(dem);
until n=0;
if dem>0 then
        for tong:=1 to dem do
        write(fo,0,#32);
        close(fo);
readln;
        end.

avatar
nguyen77
Năng động
Năng động

Posts : 68
Reputation : -22
Join date : 18/06/2018

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Khai triển Cantor

Bài gửi by truongquocbao2004 on Thu Nov 22, 2018 3:07 pm

Code:
program cantor;
uses crt;
var fi,fo:text;
    n:longint;

function gt(n:longint):longint;
var t,i:longint;
begin
t:=1;
for i:=2 to n do t:=t*i;
gt:=t;
end;

procedure doc;
begin
assign(fi,'cantor.inp');
reset(fi);
readln(fi,n);
close(fi);
end;

procedure xuly;
var k,s:longint;
begin
assign(fo,'cantor.out');
rewrite(fo);
k:=1;
while gt(k)<n do inc(k);
dec(k);
repeat
        s:=k;
        while gt(k)*s>n do dec(s);
        write(fo,s,' ');
        n:=n-gt(k)*s;
        dec(k);
until n=0;
if k>0 then
for s:=1 to k do write(fo,'0 ');
close(fo);
end;

begin
clrscr;
doc;
xuly;
readln;
end.
avatar
truongquocbao2004
Nhiệt tình
Nhiệt tình

Posts : 40
Reputation : -10
Join date : 18/06/2018

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Khai triển Cantor

Bài gửi by thanhtruc on Thu Nov 22, 2018 3:10 pm

Code:
Program cantor;
uses crt;
var n,i,s,k:longint;
fi,fo:text;

function gt(n:longint):longint;
var t:longint;
begin
gt:=1;
for i:=2 to n do
gt:=gt*i;;
end;

BEGIN
clrscr;
assign(fi,'cantor.inp');
reset(fi);
readln(fi,n);
assign(fo,'cantor.out');
rewrite(fo);
while gt(i)<=n do
i:=i+1;
k:=i;
repeat
k:=k-1;
s:=n div gt(k);
n:=n-gt(k)*s;
write(fo,s,' ');
until n=0;
write(fo,'0');
close(fi);
close(fo);
readln;
End.
avatar
thanhtruc
Nhiệt tình
Nhiệt tình

Posts : 43
Reputation : -7
Join date : 25/06/2018
Age : 14
Location : TNPPTSBĐ

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Khai triển Cantor

Bài gửi by Sponsored content


Sponsored content


Về Đầu Trang Go down

Về Đầu Trang

- Similar topics

 
Permissions in this forum:
Bạn không có quyền trả lời bài viết