Lần sửa cuối bởi downcome, ngày 29-02-2008 lúc 12:16 PM.
quên công thức cộng công bội rồi nên yeuit làm cách này nhé.
Bạn nào có công thức đó viết ra đây nhé
yeuit có cách này
ta có công thức
1+2+3+4+5 +...+n = n(n+1)/2
áp dụng cho bài của bạn
Với n < 100
Nếu n là số lẻ thì S = 1 + 3 + 5 +...+ n = [2+4+6+8+...+(n+1)] -[(n-1)/2+1]
đem trừ từng phần tử cho 1
Nếu n là số chẵn thì S = 2 + 4 + 6 +...+ n = 2(1+2+3+...+n/2)
ta có 1+2+3+....+m = m(m+1)/2
-> 1+3+5+...+n = 2([(n+1)/2]*[(n+1)/2+1])/2 - [(n-1)/2+1]
= (n+1)(n+3)/4 - (n+1)/2
2 + 4 + 6 +...+n = 2[n/2(n/2+1)]/2 = n(n+2)/4
có gì sai sót bà con giải lại hộ nhé . lâu rồi già cả đầu óc lu bu quá
Program tinhtong;
Var n,sum: integer;
Begin
Write('Nhap vao so nguyen n: '); Readln(n);
if n mod 2 =0 then
sum = (n+1)(n+3)/4 - (n+1)/2 ;
else
sum = n(n+2)/4;
Writeln('tong can tim la :',sum);
Readln;
End.
thông cảm thông cảm sữa cho chạy nhé, yeuit chưa học pascal. Không biết cái viết có phải là pascal không
Thân này vô thường, tâm này vô ngã
các bạn cũng có thể dùng cách sau
Program tinhtong;
Var n,i, sum: integer;
Begin
Write('Nhap vao so nguyen n: '); Readln(n);
if n mod 2 = 1
i = 1 ;
else
i = 2 ;
while i<=n
begin
sum = sum + i;
i = i+2 ;
end
Writeln('tong can tim la :',sum);
Readln;
End.
Thân này vô thường, tâm này vô ngã
với hai cách trên
cách 1 : dùng khi n quá lớn nếu dùng lặp sẽ tốn chi phí
Cách 2 dùng khi n trung bình như bài này (n<100) có thể dùng cách này như vậy chi phí sẽ thấp.
Thân này vô thường, tâm này vô ngã
các giải pháp của downcom và thanhvt rất tốt.
Các bạn viết code ra nhé. Tuy nhiên các bạn đều làm
cho lặp từ 1-> n (tốn chi phí n)
mỗi lần kiểm tra tốn n chi phí
Chi phí co phép cộng n/2
-> chi phí n+n+n/2
Nếu các bạn khéo léo mỗi lần lặp bạn tăng i lên 2 thì sẽ bỏ được n/2 lần lặp
và n chi phí kiểm tra
Với mỗi bài dù nhỏ, cũng có rất nhiều cách để viết giải thuật tuy nhiên các bạn không nên xem thường bài nhỏ mà làm sơ sài nhé !
Thân !
Thân này vô thường, tâm này vô ngã
cái này là bài đầu tiên mình học lập trình hihihihihi
ko biết từ bao giờ rồi
chủ yếu là thuật toán thôi
thuật toán càng ngắn ct càng chạy nhanh tốn ít tài nguyên thôi ^^
Lần sửa cuối bởi thanhvt688, ngày 29-02-2008 lúc 03:03 PM.
anh nào giải bài này nhé! ^^! Bài này là bài thi học kỳ I vừa rồi!
Tính tổng S và xuất ra màn hình!
Với n < 100
Nếu n là số lẻ thì S = 1 + 3 + 5 +...+ n
Nếu n là số chẵn thì S = 2 + 4 + 6 +...+ n
Đa số học sinh lớp 11 khi nhận được đề đều pó tay! không ai viết đc trong vòng 45 phút! Nên điểm cao nhất là 3 điểm cho mỗi bài! ^^!
{Làm thử nha, if hơi nhìu, pài cũng hơi dài, thông cảm}
program tong;
var n,i:shortint;s:word;
begin
repeat
write('Nhap vao n: ');readln(n);
until n in [1..99];
s:=0;
if (n mod 2=0) then
for i:=2 to n do
if i mod 2 = 0 then s:=s+i;
if (n mod 2<>0) then
for i:=1 to n do
if i mod 2 <>0 then s:=s+i;
write('Tong la: ',s);
readln;
end.
pà kon kô pác làm thử baj nj` nhá!
Đề bài: Số siêu nguyên tố là một số mà ban đầu nó là số nguyên tố, bỏ đi chữ số cuối cùng vẫn là số nguyên tố, đến khi chỉ còn 1 chữ số vẫn là số nguyên tố. (Hà hà, em giải thjk hơi khó hiu~); Viết chương trình nhập vào một số nguyên dương và xét xem số đó có phải là số siêu nguyên tố không? (gợi ý nhá: dùng hàm tiện hơn nhìu so với viết ra chương trình chính đấy!!!)
a:= n mod 10;
while ngto(a)= true do
begin
d:=d+1;
n:=n div 10;
a:=n mod 10;
end;
if (n div d<10) and (n div d >0) then writeln(' n la sieu ngto') else
writeln(' ko fai');
chỉ làm fần chính thôi
Lần sửa cuối bởi tynz, ngày 04-01-2011 lúc 11:09 PM. Lý do: Bổ Sung
Có 1 người đang xem chủ đề. (0 thành viên và 1 khách)