View Full Version : Có ai biết thì giup mình bài nay caj'" CẮT SỐ"
pascalmen_9xpro
25-01-2011, 21:03
nhập vào 1 số
sau đó hay phan tích đó thành tổng của các chữ số integer sao cho tích của chúng là lớn nhất
nghe khó nhỉ
tut4ever
06-02-2011, 09:37
bt mà
có thể làm từ lệnh giả này nhé:
thừa biết a+b >= 2 căn ab (cosi ấy)
tích
--> ab max <=> a = b ổn --> theo hướng đó, nếu số ban đầu là số âm --> cặp cần tìm (0, sô ấy)
nếu số ban đầu dương thì:
gọi biến nữa là a: real nhé: a:= số ban đầu /2
--> giá trị cần tìm: số thứ nhất:= trunc(a)
số còn lại thì ai cũng biết được : số ban đầu - số thứ nhất
dạ hết ạ
còn cách khác là dùng vòng lặp: lấy 2 biến , tăng biến này lên 1 đơn bị ,giảm biến kia xuống 1 đơn vị. sao cho tổng không đổi. kiểm tra xem cặp nào có tích lơn nhất là xong!
bt mà
có thể làm từ lệnh giả này nhé:
thừa biết a+b >= 2 căn ab (cosi ấy)
tích
--> ab max <=> a = b ổn --> theo hướng đó, nếu số ban đầu là số âm --> cặp cần tìm (0, sô ấy)
nếu số ban đầu dương thì:
gọi biến nữa là a: real nhé: a:= số ban đầu /2
--> giá trị cần tìm: số thứ nhất:= trunc(a)
số còn lại thì ai cũng biết được : số ban đầu - số thứ nhất
dạ hết ạ
còn cách khác là dùng vòng lặp: lấy 2 biến , tăng biến này lên 1 đơn bị ,giảm biến kia xuống 1 đơn vị. sao cho tổng không đổi. kiểm tra xem cặp nào có tích lơn nhất là xong!
đọc kĩ đầu bài chưa bạn, ko phải là tách thành 2 số đâu. và chắc chắn ở đây không thể xét số âm được. mình chỉ cho bạn 3 ví dụ rồi bạn suy nghĩ thêm nhé:
6=4+2 có tích là 8
- 6= 3+3 có tích là 9
10=3+3+3+1 có tích là 27
10=3+3+2+2 có tích là 36
pascalmen_9xpro
10-02-2011, 20:16
bạn kidsptn noí đúng đấy ý mình la không phải 2 số đâu mà có thể là nhiều số
HGMinh95
11-02-2011, 10:02
Mọi người thử xem cách này có đúng ko
Nếu phân tích số k thành tổng của các số 3 và nhiều nhất là 2 số 2 thì sẽ được tích lớn nhất (tự chứng minh nhé :) )
==> Thuật toán sẽ là:
+ Nếu k mod 3 = 0 thì k= 3+3+...+3+3 (k div 3 số 3)
+ Nếu k mod 3 = 1 thì k= 3+3+...+2+2 (k div 3-2 số 3 và 2 số 2)
+ Nếu k mod 3 = 2 thì k= 3+3+...+3+2 (k div 3-1 số 3 và 1 số 2)
HGMinh95
11-02-2011, 18:41
to vi du nha
17
co the phan tich thanh 4 so nhu 2 4 5 6
17=3+3+3+3+3+2 3*3*3*3*3*2=486
17=2+4+5+6 2*4*5*6=240<486
17 phân tích thành 5 số 3 và 1 số 2 đúng rồi còn gì?????
tui thấy nó không ổn lắm
ví dụ: 10 =3+3+2+2 có tích bằng 36
10 =10+(-10)+3+(-3)+10 có tích bằng 9000.
cái đề đó nên đổi thành các số dưới kiểu word thì đúng hơn
HGMinh95
13-02-2011, 09:14
Nếu phân tích thành số âm thì làm sao tìm được tích lớn nhất
tích của hai số âm là một số dương mà
tui nghĩ bài này phải dùng định lí cô-si với nhiều số nguyên dương
pascalmen_9xpro
13-02-2011, 18:38
các số word cũng được hay số nguyên dương cũng được nhưng làm sao cho tích là cao nhất
nó có quy luật mà
VD: 10= 3+3+4 có tích lớn nhất
20= 3+3+3+3+3+3+2 có tích lớn nhất
30= 3+3+3+3+3+3+3+3+3+3 có tích lớn nhất
cho x:= N div 3
lập trình cho số đó biểu diễn dưới dạng tổng của x-1 số 3.
nếu N mod 3= 0 thì số cuối cùng cộng với 3
N mod 3=1 thì số cuối cùng cộng với 4
N mod 3 = 2 thì số cuối cùng cộng với 2
cái này thì dễ rùi phải không...
pascalmen_9xpro
16-02-2011, 21:13
đã nói là các số khác nhau mà
hehe. bạn chỉ bảo phân tích thành các số nguyên dương thui mà.
HGMinh95
17-02-2011, 18:35
Thuật toán của bài này là quay lui + quy hoạch động
uses crt;
var a:array[0..1000] of word;
k,maxlength,P,Pmax:word;
procedure Init;
begin
maxlength:=0;
Pmax:=0;
a[0]:=1;
P:=1;
end;
procedure PrintResult(n:word);
var i:word;
begin
Clrscr;
Writeln(' So can phan tich ',k);
For i:=1 to n do
Write(a[i],' ');
end;
procedure Attempt(k,n:word);
var i:integer;
begin
For i:=a[n-1]+1 to k do
begin
If (k-a[n-1]-1 <= a[n-1]+1) and (i<>k) then
If n<maxlength then Break
else begin i:=k-1; continue; end;
P:=P*i;
a[n]:=i;
If (i=k) and (P>Pmax) then
begin
PrintResult(n);
maxlength:=n;
Pmax:=P;
end;
If i<k then Attempt(k-i,n+1);
P:=P div i;
end;
end;
begin
Clrscr;
Init;
Write(' Nhap so can phan tich: '); readln(k);
Attempt(k,1);
readln
end.
pascalmen_9xpro
17-02-2011, 22:31
code của ban j cũng được đáy nhưng cần bổ sung để đưa ra tích lớn nữa là được thank! mình sẽ rút kinh nghiệm
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.