30/09/2018, 17:07
Tính tổng các số nguyên nhỏ hơn n chia hết cho a nhưng k chia hết cho b
tính tổng các số nguyên nhỏ hơn n chia hết cho a nhưng k chia hết cho b
#include<stdio.h>
int chiahet(int m, int a, int b);
int main()
{
int a, b, n, s=0;
printf("nhap 3 so nguyen a b n voi a,b<n
");
scanf("%d%d%d", &a, &b, &n);
if(a<n && b<n)
{
for (int i=1; i<n; i++)
{
if(chiahet(n, a, b) == 1)
s+=i;
}
}
printf("tong cac so nguyen < n chia het cho a nhung khong chia het cho b la %d", s);
}
int chiahet(int m,int a, int b)
{
if (m%a==0 && m%b!=0)
return 1;
return 0;
}
mọi người cho hỏi code e sai chỗ nào mà chạy nó toàn ra kết quả =0 .
Bài liên quan
bạn xem kỹ lại điều kiện nhé
z là if (chiahet(n,a,b)==1)
nhưng vẫn k dc bạn ơi
k pit lỗi chỗ nào nữa
Bạn ơi, điều kiện là
a, b < n
, vậy cái này là gì đây ?sửa rồi vẫn chưa dc @nhatlonggunz ơi
Vậy hàm chia hết, bạn thử làm thế này xem
cug k dc để mình show code lên cho bạn chạy thử
Vậy thì có lẽ là do scanf :v
Mình vừa sửa lại scanf của bạn và okay
Bạn test vớ a,b như thể nào?
Em chỉnh lại cái scanf thì lại được anh @Gio ơi ?
Bài này có thể chạy trong O(1) đấy
Em nghĩ là nên lấy bội của a, để kiểm tra, như thế sẽ bớt được rất nhiều
Không biết còn cách nào nhanh hơn không ?
@Gio
ok mình sửa được rồi bạn
g=a* b/__gcd(a,b);
Tổng số từ 1->n chia hết cho x:
F(n,x)= { k=(n-1)/x; return xk(k+1)/2;}
=>
s=F(n,a) - F(n,g);
update
k=(n-1)/x vì đếm < n
@huyenthoai bạn thử cho mình xem input của bạn để đi, mình làm code y chang vậy vẫn ra mà
Lol. Kết quả nhìn hư cấu hoá ra thay biến i = n à?
Éc, để em debug lại :v
không phải @Gio vẫn giữ là i
ý tưởng như đã nói ở trên
Ý anh ấy nói là mình nhầm i thành n
Nhưng cũng vậy mà anh @Gio :’(
Kết quả khác nhau mà