|
|
cập nhật lúc 04:38 ngày 19/05
|
|
|
|
|
|
| Cách giải bài tập xử lí số trong Pascal |
 |
viph
Bài viết: 104
|
| Ngày gởi: 03/07/2011 | Số lần xem: 1311 | Góp ý: 2 |
|
|
|
|
cho minh hỏi bài tập này giải như thế nào vậy các bạn?
{{{{}}}
Cho số nguyên N (2<=N<=2000000000). Tìm số nguyên dương a nhỏ nhất sao cho a^a chia hết cho N.
ví dụ : N=9==> kết quả a=3;
N=32==> kết quả a=4;
Ráng giải giúp mình nha các bạn! thanhkyou ! |
|
|
0 |
 Bạn vui lòng chờ trong giây lát
|
|
|
| Câu Trả lời |
|
ĐÁP ÁN CHO BẠN ĐAY
program xpascalx;
var x,N,i,a,k:longint;
begin
a:=1;
writeln('nhap vao gia tri N <2<=N<=20000000>:' );readln(N);
x:= N div 2;
for i:=1 to x do
begin
for k:=1 to i do
a:=a*i;
if a mod N=0 then
begin
writeln(' gia tri a can tim la :',i);
write('HAY NHAN PHIM ENTER DE THOAT');
readln;
exit;
end;
end;
end.
VÌ MÌNH CHỈ MỚI THỬ HAI BỘ TEST CỦA BẠN NÊN CÓ GÌ SAI SÓT XIN CHỈ GIÁO
|
|
|
|
| Câu Trả lời |
|
Bài toán của bạn rắc rối chỗ là phải nắm vững giới hạn của các kiểu dữ liệu áp dụng vào các hàm
Mình giúp bạn trên nền C++, từ đó bạn có thể chuyển sang code pascal.(lưu ý với bạn là code mình chưa chuẩn lắm vì còn hạn chế khi giá trị a^a vượt quá giới hạn kiểu long double)
Hi vọng sẽ giúp được bạn !!!
Code Mẫu:
#include "iostream.h"
#include "conio.h"
#include "math.h"
long double n;
int main(void)
{
do{
cout<<"Nhap n = ";
cin>>n;
}while(n<2||n>2000000000);
long double i=2;
while(1>0)
{
long double tam=pow(i,i);
double luu= fmod(tam,n);
if(luu == 0)
{
cout<<"So can tim la: "<< i;
break;
}
i++;
}
getch();
return 0;
}
|
|
|
|
|
|
Danh sách thành viên bình chọn