Tin học Tây Sơn

phân tích số N thành tổng các số tự nhiên khác nhau

Go down

phân tích số N thành tổng các số tự nhiên khác nhau

Bài gửi by Admin on Fri Nov 09, 2018 3:13 pm

Bài 4: Cho một số nguyên dương N. Hãy phân tích số N thành tổng các số tự nhiên khác nhau sao cho tích của chúng là lớn nhất.
            Dữ liệu vào: cho trong file văn bản TICHLN.INP có chứa số N.
            Dữ liệu ra: ghi vào file TICHLN.OUT, có cấu trúc như sau:
                        – Dòng 1: chứa số lượng số hạng tìm được.
                        – Dòng 2: chứa các số hạng của tổng tìm được.
                        – Dòng 3: chứa tích lớn nhất.
            Các số trên cùng một dòng cách nhau ít nhất một dấu cách.
            Ví dụ:
                       
TICHLN.INP
TICHLN.OUT
103
2  3  5
30
avatar
Admin
Admin
Admin

Posts : 640
Reputation : -35
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: phân tích số N thành tổng các số tự nhiên khác nhau

Bài gửi by mainhatthong2004 on Sat Nov 10, 2018 1:52 pm

thong:
program bai4;
uses crt;
var fi,fo:text;
s,i,n,j,d:integer;
a:array[1..100] of integer;
//---------------------------------
procedure doc_file;
begin
assign(fi,'TICHLN.inp');
reset(fi);
read(fi,n);
close(fi);
end;
//-----------------------------------
procedure tichln;
begin
i:=0;
d:=0;
j:=2;
while d<=n do
begin
inc(i);
d:=d+j;
a[i]:=j;
inc(j);
end;
j:=0;
d:=d-a[i];
while d<n do
begin
inc(j);
a[i-j]:=a[i-j]+1;
d:=d+1;
if j=i-1 then
j:=0;
end;
s:=1;
for j:=1 to i-1 do
s:=s*a[j];
end;
//----------------------------------
procedure ghi_file;
begin
assign(fo,'TICHLN.out');
rewrite(fo);
writeln(fo,i-1);
for j:=1 to i-1 do
write(fo,a[j],' ');
writeln(fo);
write(fo,s);
close(fo);
end;
//--------------------------------------
begin
clrscr;
doc_file;
tichln;
ghi_file;
readln;
end.
avatar
mainhatthong2004
Năng động
Năng động

Posts : 62
Reputation : -24
Join date : 18/06/2018

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

Về Đầu Trang Go down

Re: phân tích số N thành tổng các số tự nhiên khác nhau

Bài gửi by nguyen77 on Sat Nov 10, 2018 1:58 pm

Code:
program bt;
uses crt;
var
fi,fo:text;
s,i,n,j,dem:integer;
a:array[1..1000] of integer;
//---------------------------------
procedure timfile;
begin
assign(fi,'TICHLN.inp');
reset(fi);
read(fi,n);
close(fi);
end;
//-----------------------------------
procedure tichln;
begin
i:=0;
dem:=0;
j:=2;
while dem<=n do
begin
        inc(i);
        dem:=dem+j;
        a[i]:=j;
        inc(j);
end;
j:=0;
dem:=dem-a[i];
while d<n do
begin
        inc(j);
        a[i-j]:=a[i-j]+1;
        dem:=dem+1;
        if j=i-1 then
                j:=0;
end;
s:=1;
for j:=1 to i-1 do
        s:=s*a[j];
end;
//----------------------------------
procedure infile;
begin
assign(fo,'TICHLN.out');
rewrite(fo);
writeln(fo,i-1);
for j:=1 to i-1 do
write(fo,a[j],' ');
writeln(fo);
write(fo,s);
close(fo);
end;
//--------------------------------------
begin
clrscr;
timfile;
tichln;
infile;
readln;
end.


Được sửa bởi nguyen77 ngày Sat Nov 10, 2018 4:04 pm; sửa lần 1.
avatar
nguyen77
Năng động
Năng động

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

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

Về Đầu Trang Go down

Re: phân tích số N thành tổng các số tự nhiên khác nhau

Bài gửi by Nguyễn Văn Biên on Sat Nov 10, 2018 2:01 pm

Code:
program Bai_4;
var fi,fo:text;
    s,i,n,j,d:integer;
    A:array[1..100] of integer;

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

procedure tichln;
begin
        i:=0; d:=0; j:=2;
        while d<=n do
        begin
                inc(i);
                d:=d+j;
                a[i]:=j;
                inc(j)
        end;
        j:=0;
        d:=d-a[i];
        while d<n do
        begin
                inc(j);
                a[i-j]:=a[i-j]+1;
                d:=d+1;
                if j=i-1 then j:=0
        end;
        s:=1;
        for j:=1 to i-1 do s:=s*a[j]
end;

procedure ghi;
begin
        assign(fo,'TICHLN.out'); rewrite(fo);
        writeln(fo,i-1);
        for j:=1 to i-1 do write(fo,a[j],' ');
        writeln(fo); write(fo,s); close(fo)
end;

begin
        doc; tichln; ghi;
end.


Được sửa bởi Nguyễn Văn Biên ngày Sat Nov 10, 2018 4:05 pm; sửa lần 1. (Reason for editing : No "uses crt")
avatar
Nguyễn Văn Biên
S-mod
S-mod

Posts : 170
Reputation : 22
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: phân tích số N thành tổng các số tự nhiên khác nhau

Bài gửi by quantran on Sat Nov 10, 2018 4:04 pm

code cua em:
program bai4;

var
fi,fo:text;
n,i,j,t,d:integer;
a:array[1..1000] of integer;

//---------------------------------
procedure read_file;
begin
assign(fi,'tichln.inp');
reset(fi);
read(fi,n);
close(fi);
end;
//-----------------------------------

procedure TICH;
begin
i:=0;
d:=0;
j:=2;
while d<=n do
begin
inc(i);
d:=d+j;
a[i]:=j;
inc(j);
end;
j:=0;
d:=d-a[i];
while d<n do
begin
inc(j);
a[i-j]:=a[i-j]+1;
d:=d+1;
if j=i-1 then
j:=0;
end;
t:=1;
for j:=1 to i-1 do
t:=t*a[j];
end;
//----------------------------------

procedure write_file;
begin
assign(fo,'TICHLN.out');
rewrite(fo);
writeln(fo,i-1);
for j:=1 to i-1 do
write(fo,a[j],' ');
writeln(fo);
write(fo,t);
close(fo);
end;
//--------------------------------------

begin
read_file;
TICH;
write_file;
readln;
end.
avatar
quantran
Năng động
Năng động

Posts : 63
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: phân tích số N thành tổng các số tự nhiên khác nhau

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