-
06-23-2010, 01:47 AM #1
Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 19
[Help] Tìm số nguyên dương a nhỏ nhất thỏa mãn: a^a chia hết N. (Số lớn)
Cho số nguyên N(2<N<1000.000.000).Tìm số nguyên dương nhỏ nhất sao cho a^a chia hết
cho N,
VD:N=9 => Kết quả a=3.
MỌI NGƯỜI GIẢI GIÚP EM NHÉ!EM ĐANG CẦN GẤP!
-
06-23-2010, 03:43 AM #2
Junior Member
- Ngày tham gia
- Nov 2015
- Bài viết
- 5
Ý tưởng thế này nhé. Bạn coi được không:
+ Viết 1 hàm tính số mũ: Somu(a) = a^a (cái này tự viết)
+ Dùng vòng lặp While ... Do để làm:
i:=2;
While Somu(i) mod n <> 0 Do
i:=i+1;
Write(i);
-
06-23-2010, 03:53 AM #3
Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 11
Bạn ơi,bươc đầu tiên tớ chưa hiểu lắm,bạn có thể viết CT phần đó ra đc ko.
-
06-23-2010, 04:55 AM #4
Silver member
- Ngày tham gia
- Aug 2015
- Bài viết
- 257
Công thức tính số mũ:
Mã:kq := exp(so_mu * Ln(co_so));
Mã:kq := exp(a*Ln(a));
-
06-23-2010, 06:09 PM #5
Silver member
- Ngày tham gia
- Sep 2015
- Bài viết
- 32
Ý tưởng nè bạn: Tìm số nhỏ nhất chia hết cho N là số chính phương. Cái này bạn làm được chứ?? Tiếp: lấy căn bậc 2 của số chính phương đó => kết quả cần tìm.
-
06-23-2010, 10:22 PM #6
Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 6
nhưng kẹt 1 chỗ:nếu làm như bạn thì phải khai báo cái số chính phương như thế nào đây:
Var a:integer;n:longint;b:???
Begin
Clrscr;
Repeat
Write('Nhap so nguyen n= ');readln(n);
Until (n>2) and (n<1000.000.000);
For b:=3 to n do
If (frac(sqrt(b))=0) then
If b mod n =0 then
a:=sqrt(b);
Write(a);
Readln
End.
Chú ý:bài theo ý tưởng này khó xđ 'b' quá.Vì nó có câu lệnh là thuộc 'integer' ,có câu lệnh thuộc 'real'.Tớ ko biết phải sửa ntn?Các bạn giúp tớ nhé!
-
06-24-2010, 04:18 AM #7
Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 4
Gửi bởi trungsyk10it
+ Hàm tính số mũ:
For i:=1 to a do tg:=a*a;
Somu:=tg;
Còn mấy dòng lệnh dưới chắc bạn hiểu rùi.
-
06-24-2010, 04:51 AM #8
Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 2
Khai báo longint hay int64(free) là ok mà bạn. Kiểm tra chính phương dùng trunc và sqrt ấy.
Code của bạn sai rồi, tìm b min chia hết cho N rồi lấy sqrt(b) tức là b chạy từ N trở đi chứ không phải 3->n.
Còn số chính phương không cần khai báo real đâu bạn. Để kiểm tra chính phương thì thế này: if sqrt(b)=trunc(sqrt(b)) then "là số chính phương".
-
06-25-2010, 12:40 AM #9
Silver member
- Ngày tham gia
- Feb 2016
- Bài viết
- 4
Hình như hôm nay bạn Quyên thi TIN HỌC TRẺ thì phải.
Tính kết quả của 1 lũy thừa thì nên dùng công thức, đừng nên dùng vòng for. Bởi vì tốn thời gian. Một bài hoàn chính thì cần kết quả đúng và thời gian nằm trong quy định của đề mới ăn được điểm. [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]
-
06-27-2010, 11:51 PM #10
Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 1
Bài này đơn giản thôi mà. Mình sẽ viết chương trình
cho bạn
Xe nâng người Boom lift được Công Ty TNHH Trung thành phân phối chính hãng tại khu vực phía Bắc. Với chi phí đầu tư ban đầu thấp hơn rất nhiều so với các loại xe nâng dầu , xe nâng động cơ loại...
Xe nâng người được trung thành nhập khẩu giá tốt