Xin phương pháp làm bt for

Tìm k nhỏ nhất để 2^k>=n. n nhập từ phím (chỉ đc dùng vòng lập for).
Em làm như này, một vài kết quả thì đúng, nhưng 1 số lại sai.

#include <iostream>
#include <math.h>
using namespace std;
int main ()
{
	int n,k=0;
	cout<<"n";
	cin>>n;
	for ( ; pow(2,k)<=n;k++)
	{
	}
		cout<<"k="<<k;
	return 0;
}

Sai ra sao? Cho ví dụ.

Đề yêu cầu 2^k >= n. Trong vòng for có điều kiện: pow(2,k)<=n nghĩa là khi == n nó vẫn chưa dừng lặp.

4 Likes

Đúng là đến ==n nó vẫn chưa dừng đấy ạ, nó chỉ dừng khi lớn hơn thôi. Phải sửa sao đây để nó dừng khi ==n ạ?

Thì bỏ điều kiện == đi. Chỉ xét < thôi. pow(2, k) < n.

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?