PDA

View Full Version : cứu em với C++



congluong
19-04-2009, 06:28
Bác nào pro giúp mình với, cho mình xin code bài này với.
Trong các số có n chữ số (cơ số 10) sao cho giữa chúng không có chữ số 0, tìm số mà hiệu của nó với tích các chữ số của nó là:
Lớn nhất.
Nhỏ nhất
em làm mãi mà nó không ra

minhquang12g
19-04-2009, 14:04
đề gì mà kỳ vậy? không hiểu rõ đề lắm. "Trong các số có n chữ số (cơ số 10) sao cho giữa chúng không có chữ số 0"??? là sao? "tìm số mà hiệu của nó với tích các chữ số của nó là: Lớn nhất, Nhỏ nhất"??? số này có bao nhiêu chử số đây??? bạn nói rõ dc ko ?

vanquyenhp
19-04-2009, 23:57
Không hiểu đề bài. Bạn cho ví dụ= ngôn ngữ toán để anh em viết code cho

tatthangnb
20-04-2009, 04:06
po tay luôn
bạn có thể viết lạ đề ko?
rõ rành hơn 1 chút nhe:P
như thế a e mới có thể giúp được:D

trivtn
20-04-2009, 16:32
Mình hiểu như vầy không biết có đúng không : vd có số 1234 ( n =4) thì tích các chữ số của nó là : 1x2x3x4 = 24; vậy hiệu của nó với cái tích đó là 1234-24 = 1210. Vấn đề là trong dãy số n chữ số (vd n =4) thì phải tìm hết để tìm ra anh nào có cái hiệu đó lớn nhất, nhỏ nhất.Chỉ có cách duy nhất là vét cạn , mình nghĩ chắc là phải vậy thôi. Mời các cao thủ ra tay.

congluong
21-04-2009, 09:37
hic các pác ơi co đưa cho mình cái đề chỉ có vậy thôi!! mình cũng có suy nghĩ giống trivtn. mong máy pác ra tay giùm em với

Mạnghaycode
21-04-2009, 09:56
Bác nào giỏi giải bài này với, đọc cái đề còn hiểu lờ mờ quá, chưa hình dung được funtion của nó

kimduquan
21-04-2009, 15:27
Bác nào pro giúp mình với, cho mình xin code bài này với.
Trong các số có n chữ số (cơ số 10) sao cho giữa chúng không có chữ số 0, tìm số mà hiệu của nó với tích các chữ số của nó là:
Lớn nhất.
Nhỏ nhất
em làm mãi mà nó không ra
có thể yêu cầu của đề bài như sau: tìm tất cả các chữ số có n chữ số (n do người dùng nhập vào); tính hiệu của từng số với tích các chữ số của nó ,sau đó so sánh tất cả các hiệu của tất cả các số với nhau để tìm ra số có hiệu lớn nhất và nhỏ nhất,ví dụ số 1234 sẽ có hiệu =1234-1*2*3*4.(còn điều kiện ko có chữ số 0 là vì nếu 1 số có chứa chữ số 0 thì tích các chữ số của nó =0).còn cách làm thì bạn có thể dùng "vét cạn",hoặc có thể dùng phương pháp "sinh".phương pháp vét cạn thì dễ hơn rất nhiều nhưng phải kết hợp với kĩ thuật nhánh cận để giúp chương trình chạy nhanh hơn,đối với bài này mình có 1 gợi ý như sau:1234-1*2*3*4<4321-1*2*3*4;1243-1*2*3*4<4321-1*2*3*4;1423-1*2*3*4<4321-1*2*3*4;...Bạn thử suy nghĩ xem sao!

congluong
24-04-2009, 14:12
giúp em làm bài này với: trong các số tụ nhiên có n chữ số (cơ số 10) sao cho giữa chúng không có số không, tìm số mà hiệu của nó với tích các chữ số của nó là : lớn nhất , nhỏ nhất.
em lam vầy mà nó sai kko bít tại sao pác nào giỏi sửa code lại dùm em với!!!

#include "iostream"
using namespace std;
int Test_Zero( int );
int main()
{
int n=0,k,j;
int a[10000]={0};
int b[10000]={0};
cout << "nhap so n : ";
cin >> n ;
j = 0;
int n1 = 1, n2 = 1;
for ( int i = 0 ; i < n ; i++ )
{
n1 *= 10;
n2 *= 10;
}
n1 = n1/10;
for(int i = n1 ; i < n2 ; i++)
{
int t = Test_Zero(i);
k = i - t;
if( t )
{
a[j] = k ;
b[j] = i;
j++;
}
}
int min = a[0];
int max = a[0];
int i1 = 0 , i2 = 0;
for( int i = 1 ; i < j ; i++ )
{
if( a[i] < min )
{
min = a[i];
i1 = i;
}
if( a[i] > max )
{
max = a[i];
i2 = i;
}
}
cout << "ket qua :\n";
cout << "min : " << b[i1] << endl ;
cout << "max : " << b[i2] << endl ;
return 0;
}
int Test_Zero(int n)
{
int count = 0 , i = 0 , a[10] , k = 1 , P = 1;
while( k*10 <= n )
k *= 10;
while( k )
{
a[count] = (int)n/k;
count++;
n%=k;
k/=10;
}
for( i=0 ; i < count ; i++)
P *= a[i];
return P;
}

binprolab
24-04-2009, 14:39
code các bạn nên để trong [php] [php] nhé. Như vậy mọi người sẽ nhìn sẽ dễ hơn.