Tin học Tây Sơn

Tích các chữ số

Go down

Tích các chữ số

Bài gửi by Admin on Sat Nov 10, 2018 5:01 pm

Cho số nguyên dương N (0 ≤ N ≤ 1015).
Yêu cầu: Tìm số nguyên dương Q nhỏ nhất sao cho tích các chữ số của Q bằng N.
Dữ liệu: Vào từ file văn bản NUMSPLIT.INP:
·         Dòng thứ nhất ghi số nguyên dương T (2 ≤ T ≤ 100) là số lượng test.
·         T dòng tiếp theo, mỗi dòng ghi một số nguyên dương N
Kết quả: Ghi ra file văn bản NUMSPLIT.OUT gồm T dòng, mỗi dòng ghi ra số Q tìm được tương ứng với số N, nếu không tìm được thì ghi ra số -1.
Ví dụ




NUMSPLIT.INP
NUMSPLIT.OUT
3
10
16
13
25
28
-1
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: Tích các chữ số

Bài gửi by tonguyengiahan237 on Mon Nov 12, 2018 5:29 pm

Code:
Program Tich_cac_chu_so;
Uses crt;
Type Mang=array[1..1000]of longint;
Var N:Mang;
  T:integer;
  fi,fo:text;

Procedure Doc_du_lieu(Var N:Mang;Var T:integer;Var fi:text);
Var i:integer;
Begin
Assign(fi,'NUMSPLIT.INP');
Reset(fi);
Readln(fi,T);
For i:=1 to T do
begin
Readln(fi,N[i]);
end;
Close(fi);
End;

Function KT_snt(T:Longint):boolean;
Var i:longint;
Begin
KT_snt:=false;
For i:=2 to trunc(sqrt(T)) do
If T mod i =0 then exit;
KT_snt:=true;
End;

Procedure Tim(Var N:Mang;Var T:integer;Var fo:text);
Var a,b,i,tam,Tich:longint;
Begin
Assign(fo,'NUMSPLIT.OUT');
Rewrite(fo);
Tich:=1;
For i:=1 to T do
If KT_snt(N[i])=true then Writeln(fo,'-1')
Else
Tam:=N[i];
While tam<>0 do
begin
Tam:=Tam mod 10;
Tich:=Tich*Tam;
Tam:=Tam div 10;
If Tich=N[i] then Write(fo,'Tam');
End;
Writeln;
End;

BEGIN
CLRSCR;
Doc_du_lieu(N,T,fi);
Tim(N,T,fo);
READLN;
END.


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

Posts : 16
Reputation : -3
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: Tích các chữ số

Bài gửi by lohan on Tue Nov 13, 2018 12:05 pm

Code:

Program Tich_so;
Uses crt;
Type Mang=array[1..1000]of longint;
Var n:Mang;
t,i,a,b,j:integer;
fi,fo:text;

Procedure Doc_tep;
Begin
Assign(fi,'TICHLN.INP');
Reset(fi);
Readln(fi,t);
For i:=1 to t do
begin
Readln(fi,n[i]);
end;
Close(fi);
End;

Procedure Tim;
Begin
Assign(fo,'TICHLN.OUT');
Rewrite(fo);
For i:=1 to T do
j:=0;
a:=0;
b:=0;
While a*b<>N[i] do
begin
a:=a+1;
b:=b+1;
If a*b=N[i] then
begin
j:=j+1;
Writeln(fo,a,b);
end;
end;
If j=0 then writeln(fo,'-1');
End;

BEGIN
CLRSCR;
Doc_tep;
Tim;
READLN;
END.


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

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

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

Về Đầu Trang Go down

Re: Tích các chữ số

Bài gửi by mainhatthong2004 on Tue Nov 13, 2018 1:54 pm

thong:
program bai4;
uses crt;
var fi,fo:text;
n,i,j:integer;
a:array[1..100] of integer;
//-----------------------------------
function tich(x:integer):integer;
begin
tich:=1;
while x>0 do
begin
tich:=tich*(x mod 10);
x:=x div 10;
end;
end;
//--------------------------------------
procedure read_doc;
begin
assign(fi,'NUMSPLIT.inp');
reset(fi);
readln(fi,n);
for i:=1 to n do
readln(fi,a[i]);
close(fi);
end;
//----------------------------------------
procedure viet;
begin
assign(fo,'NUMSPLIT.out');
rewrite(fo);
for i:=1 to n do
for j:=10 to 32675 do
if  tich(j)=a[i] then
begin
writeln(fo,j);
break;
end else
if j=32675 then
writeln(fo,-1);
close(fo);
end;
//---------------------------------------------------
begin
clrscr;
read_doc;
viet;
readln;
end.

gio chac chay dc roi do


Được sửa bởi mainhatthong2004 ngày Tue Nov 13, 2018 2:10 pm; sửa lần 1.
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: Tích các chữ số

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

mainhatthong2004 đã viết:
function tich(x:integer):integer;
begin
tich:=1;
while x>0 do
begin
tich:=tich*(x mod 10);
x:=x div 10;
end;
Thiếu 1 cái end nữa
+ -1
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: Tích các chữ số

Bài gửi by Cao Hải Dương on Tue Nov 13, 2018 2:02 pm

CODE:
Program tich;
Uses crt;
Var n,q,i,z,j:longint; fi,fo:text;
a:array[1..100] of longint;

Function tich(x:longint):longint;
Var t,k:longint;
Begin
t:=1;
While x<>0 do
Begin
k:=x mod 10;
t:=t*k;
x:=x div 10;
End;
tich:=t;
End;

Begin
Clrscr;
Assign(fi,'NUMSPLIT.INP');Reset(fi);
Readln(fi,n);
For i:=1 to n do Readln(fi,a[i]);
Close(fi);
Assign(fo,'NUMSPLIT.OUT');Rewrite(fo);
For i:=1 to n do
Begin
z:=1; j:=0;
While tich(z)<=a[i] do
Begin z:=z+1;
If tich(z)=a[i] then Begin writeln(fo,z); j:=j+1 End;
End;
If j=0 then write(fo,'-1');
End;
Close(fo);
Readln;
End.
avatar
Cao Hải Dương
Năng động
Năng động

Posts : 46
Reputation : 14
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: Tích các chữ số

Bài gửi by nguyen77 on Tue Nov 13, 2018 2:06 pm

Code:
program bt;
uses crt;
var i,n,j:longint;
fi,fo:text;

a:array[1..100] of longint;
function nt(x:longint):boolean;
var j:longint;
begin
nt:=true;
for j:=2 to trunc(sqrt(x)) do
        IF X MOD j=0 THEN
                begin
                        nt:=false;
                        break;
                end;
end;

function tich(x:longint):longint;
var j:longint;
begin
j:=x;
tich:=1;
while j>0 do
        begin
        tich:=tich*( j mod 10);
        j:=j div 10;
end;
end;

begin
clrscr;
assign(fi,'NUmsplit.inp');
reset(fi);
readln(fi,n);
for i:=1 to n do
        readln(fi,a[i]);
close(fi);
assign(fo,'NUMSPLIT.out');
rewrite(fo);
for i:=1 to n do
for j:=10 to 10000 do
        if tich(j)=a[i] then
                begin
                writeln(fo,j);
                break;
                end
        else
        if j=10000 then
                writeln(fo,'-1');
        close(fo);


readln;
end.



Được sửa bởi nguyen77 ngày Tue Nov 13, 2018 2:16 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: Tích các chữ số

Bài gửi by Nguyễn Văn Biên on Tue Nov 13, 2018 2:09 pm

Code:
program Tich_so_lon_nhat;
var n,q,i,z,j:longint;
    fi,fo:text;
    A:array[1..100] of longint;

function tich(x:longint):longint;
var k:longint;
begin
        tich:=1;
        while x<>0 do
        begin
                k:=x mod 10;
                tich:=tich*k;
                x:=x div 10
        end
end;

begin
        assign(fi,'NUMSPLIT.INP'); reset(fi);
        readln(fi,n);
        for i:=1 to n do readln(fi,a[i]);
        close(fi);
        assign(fo,'NUMSPLIT.OUT'); rewrite(fo);
        for i:=1 to n do
        begin
                z:=1; j:=0;
                while tich(z)<=a[i] do
                begin
                        z:=z+1;
                        If tich(z)=a[i] then
                        begin writeln(fo,z); j:=j+1 end
                end;
                if j=0 then write(fo,'-1')
        end;
        close(fo)
end.
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: Tích các chữ số

Bài gửi by quantran on Tue Nov 13, 2018 2:19 pm

code cua em:
program bai4;
uses crt;
var fi,fo:text;
n,i,j,s,t,k:integer;
a:array[1..100] of integer;
//-----------------------------------
function tich(x:integer):integer;
begin
s:=1;
while x>0 do
begin
t:=x mod 10;
s:=s*t;
x:=x div 10;
end;
tich:=s;
end;
//--------------------------------------
procedure xuli;
begin
assign(fi,'numsplit.inp');
reset(fi);
readln(fi,n);
for i:=1 to n do
readln(fi,a[i]);
close(fi);
assign(fo,'NUMSPLIT.out');
rewrite(fo);
for k:=1 to n do
for j:=10 to 32675 do
if tich(j)=a[k] then
begin
writeln(fo,j);
break;
end;
close(fo);
end;
//---------------------------------------------------
begin
clrscr;
xuli;
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: Tích các chữ số

Bài gửi by huynhtanluc on Tue Nov 13, 2018 2:20 pm

Code:
Program bt;
uses crt;
type mang=array[1..100] of longword;
var n,i,j,t:longword;t1,t2:text;a:mang;

        Procedure doc;
        var i:longword;
        begin
        assign(t1,'numsplit.inp');
        reset(t1);
        readln(t1,t);
        for i:=1 to t do
        readln(a[i]);
        close(t1);
        end;

        Function nt(n:longword):boolean;
        var i:longint;
        begin
        nt:=true;
        for i:=2 to trunc(sqrt(n)) do
        begin
        nt:=false;
        break;
        end;
        end;

        Function tichcs(n:longword):longword;
        var s:longword;
        begin
        s:=1;
        while n>0 do
        begin
        s:=s+(n mod 10);
        n:=n div 10;
        end;
        s:=tichcs;
        end;


        Procedure inra;
        begin
        assign(t2,'numsplit.out');
        rewrite(t2);
        for i:=1 to t do
        if nt(a[i]) then writeln(t2,'-1') else
        begin
        j:=1;
        while tichcs(j)<>a[i]  do
        begin
        inc(j);
        if tichcs(j)=a[i] then
        begin
        writeln(t2,j);
        end;
        end;
        end;
        close(t2);
        end;

Begin
        clrscr;
        doc;
        inra;
        readln;
End.




Được sửa bởi huynhtanluc ngày Tue Nov 13, 2018 3:34 pm; sửa lần 1.
avatar
huynhtanluc
Năng động
Năng động

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

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

Về Đầu Trang Go down

Re: Tích các chữ số

Bài gửi by Đinh Ngọc Mạnh on Tue Nov 13, 2018 2:30 pm

Code:
var
n,i,z,j:longint;
A:array[1..1000]of integer;
fi,fo:text;

function tich(x:longint):longint;
var
t,k:longint;
begin
t:=1;
while x<>0 do
begin
k:=x mod 10;
t:=t*x;
x:=x div 10
end;
tich:=t;
end;

begin
assign(fi,'numsplit.inp'); reset(fi);
readln(fi,n);
for i:=1 to n do readln(fi,A[i]);
assign(fo,'numsplit.out'); rewrite(fo);
for i:=1 to n do
begin
z:=1; j:=0;
while tich(z)<>0 do
begin
z:=z+1;
if tich(z)=A[i] then
begin
write(fo,z);
j:=j+1;
end;
end;
if j=0 then write(fo,'-1');
end;
close(fo)
end.
avatar
Đinh Ngọc Mạnh
Năng động
Năng động

Posts : 62
Reputation : -32
Join date : 18/06/2018
Age : 14
Location : Ở nhà

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

Về Đầu Trang Go down

Re: Tích các chữ số

Bài gửi by thanhtruc on Tue Nov 13, 2018 2:36 pm

[code]Program Tich_cac_chu_so;
Uses crt;
Type Mang=array[1..1000] of longint;
Var a:Mang;
n,Q,i,d:longint;
fi,fo:text;

Procedure Doc;
Begin
Assign(fi,'NUMSPLIT.INP');
Reset(fi);
Readln(fi,n);
For i:=1 to n do
begin
Readln(fi,a[i]);
end;
Close(fi);
End;

function tich(x:longint):longint;
var s,k:integer;
begin
s:=1;
while x <> 0 do
begin
k:= x mod 10;
s:=s*k;
x:=x div 10;
end;
end;


Procedure Tim;
Begin
Assign(fo,'NUMSPLIT.OUT');
Rewrite(fo);
for i:=1 to n do
begin
Q:=0;d:=0;
while tich(Q) <> a[i] do
begin
inc(Q);
if tich(Q)=a[i] then
begin
writeln(fo,Q);
inc(d);
end;
end;
if d=0 then write (fo,'-1');
end;
close(fo);
end;

BEGIN
CLRSCR;
Doc;
Tim;
READLN;
END/code]
avatar
thanhtruc
Nhiệt tình
Nhiệt tình

Posts : 36
Reputation : -7
Join date : 25/06/2018
Location : TNPPTSBĐ

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

Về Đầu Trang Go down

Re: Tích các chữ số

Bài gửi by Đinh Ngọc Mạnh on Tue Nov 13, 2018 3:28 pm

Code:
var
n,i,z,j:longint;
A:array[1..1000]of integer;
fi,fo:text;

function ngto(x:longint):boolean;
begin
ngto:=true;
for i:=2 to trunc(sqrt(x)) do if x mod j=0 then
begin
ngto:=false;
break;
end;
end;

function tich(x:longint):longint;
var
t,k:longint;
begin
t:=1;
while x<>0 do
begin
k:=x mod 10;
t:=t*x;
x:=x div 10
end;
tich:=t;
end;

begin
assign(fi,'numsplit.inp'); reset(fi);
readln(fi,n);
for i:=1 to n do readln(fi,A[i]);
assign(fo,'numsplit.out'); rewrite(fo);
for i:=1 to n do if ngto(A[i])=true then write(fo,'-1') else
begin
z:=1; j:=0;
while tich(z)<>0 do
begin
z:=z+1;
if tich(z)=A[i] then write(fo,z);
end;
end;
close(fi);
close(fo)
end.
avatar
Đinh Ngọc Mạnh
Năng động
Năng động

Posts : 62
Reputation : -32
Join date : 18/06/2018
Age : 14
Location : Ở nhà

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

Về Đầu Trang Go down

Re: Tích các chữ số

Bài gửi by quantran on Tue Nov 13, 2018 3:30 pm

code dung cua em:
program bai;
uses crt;
var fi,fo:text;
n,i,j,s,t,k:longint;
a:array[1..100] of longint;
//----------------------------------
function nt(c:longint):boolean;
var
j:longint;
begin
nt:=true;
for j:=2 to trunc(sqrt(c)) do
if c mod j=0 then
begin
nt:=false;
break;
end;
end;
//-----------------------------------
function tich(x:longint):longint;
begin
s:=1;
while x>0 do
begin
t:=x mod 10;
s:=s*t;
x:=x div 10;
end;
tich:=s;
end;
//--------------------------------------
procedure xuli;
begin
assign(fi,'numsplit.inp');
reset(fi);
readln(fi,n);
for i:=1 to n do
readln(fi,a[i]);
close(fi);
assign(fo,'NUMSPLIT.out');
rewrite(fo);
for i:=1 to n do
if nt(a[i]) then
write(fo,'-1')
else
begin
j:=1;
while tich(j)<>a[i] do
inc(j);
if tich(j)=a[i] then
writeln(fo,j);
end;
close(fo);
end;
//---------------------------------------------------
begin
clrscr;
xuli;
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: Tích các chữ số

Bài gửi by Tạ Thúy Phượng on Tue Nov 13, 2018 3:52 pm

CODE:
program bai;
uses crt;
var fi,fo:text;
n,i,j,s,t,k:longint;
a:array[1..100] of longint;
function nto(k:longint):boolean;
var
j:longint;
begin
nto:=true;
for j:=2 to trunc(sqrt(k)) do
if k mod j=0 then
begin
nto:=false;
break;
end;
end;
function tich(x:longint):longint;
begin
tich:=1;
while x>0 do
begin
tich:=tich*(x mod 10);
x:=x div 10;
end;
end;
begin
clrscr;
assign(fi,'NUMSPLIT.INP');
reset(fi);
readln(fi,n);
for i:=1 to n do
readln(fi,a[i]);
assign(fo,'NUMSPLIT.OUT');
rewrite(fo);
for i:=1 to n do
if nto(a[i]) then
write(fo,'-1')
else
begin
j:=1;
while tich(j)<>a[i] do
inc(j);
if tich(j)=a[i] then
writeln(fo,j);
end;
close(fi);
close(fo);
readln;
end.
avatar
Tạ Thúy Phượng
Năng động
Năng động

Posts : 53
Reputation : -18
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: Tích các chữ số

Bài gửi by Sponsored content


Sponsored content


Về Đầu Trang Go down

Về Đầu Trang


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