01/10/2018, 00:45
Vòng lặp trong C
Tìm số nguyên dương n nhỏ nhất sao cho 1 + 2 + 3 + … + n > 1000.
Ai đó có thể giúp em với, chủ yếu là thuật toán ạ, Em mới học vòng for mà không biết ứng dụng giải BT như thế nào cả ạ !
Bài liên quan
Bài này tính tay còn nhanh hơn code =))
@Người Bí Ẩn: cho em cách tư duy vơi ><
Bạn cho chạy vòng while i++ đi. Thêm điều kiện khi nào sum>1000 thì break và out ra giá trị i.
1 + 2 + 3 + … + n = (n*(n+1))/2
Áp dụng cái này + for loop cho nhanh
Nếu sài biểu thức này n*n(+1)/2 <= 1000 thì mình nghĩ giải bất phương trình tìm n, còn chạy vòng for thì nên dùng thêm biến sum ( mỗi vòng lặp cộng dồn biến chạy i vào sum) :slight_smile
Học đệ quy rùi thì làm thế này
Tăng n lên sau mỗi lần gọi hàm đệ quy đến khi nào >1000 thì dừng
cu the:
#include
using namespace std;
int sinh(int n)
{
if(n==1) return 1;
else return n+sinh(n-1);
}
int main()
{
int n = 1;
while(sinh(n)<1000)
{
++n;
}
cout<<"so nho nhat la "<<n-1<<endl;
cout<<"gia tri " <<sinh(44);
}
{
int i = 1, s = 0;
while (i<1000)
{
s += i;
i++;
if (s>1000)
{
printf(“so can tim la %d”, i);
break;
}
}
_getch();
}
thế này đc ko nhỉ
#include<stdio.h>
int main(){
int kq,i,n;
for(i=1;kq<=1000;i++)
{
kq+=i;
n=i;
}
printf(“so n co gia tri la %d\n”,n);
return 0;
}
int sum=0, i=0;
while(sum <= 1000)
{
i++;
sum += i;
}
cout << "n la: " << i;
Em cảm ơn mọi người nhiều