Đinh Quan Trưởng - Lập trình C/C++
Đề bài:
Kiểm tra số nguyên 4 byte có dạng 3^k hay không?
Dưới đây là đoạn code tham khảo:
#include<iostream>
#include <conio.h>
using namespace std;
int check(int n);
int main()
{
int i;
int max = 10000;
cout << "cac so co dang 2^k trong khoang [0," << max << "]:\n"
for (i = 0; i < 10000; i++)
check(i) ? cout<<i : cout<<" ";
system("pause");
}
/* Số có dạng 3^k
3^1 = 3
3^2 = 9
3^3 = 27
3^4 = 81
VD: kiểm tra số 81
81 % 3 = 27 dư 0
27 % 3 = 9 dư 0
9 % 3 = 3 dư 0
3 % 3 = 1 dư 0 => hết
VD: kiểm tra số 12
12 % 3 = 4 dư 0
4 % 3 = 1 dư 1 ==> sai
*/
int check(int n)//hàm kiểm tra dang 3^k
{
int flag = 1;
n = n < 0 ? -n : n;
if (n < 2)
return 1;
/* while(n > 1)
{
if(n % 3)
return 0;
n /= 3;
}
return 1;*/
while (n > 1)
{
int du = n % 3;
if (du != 0) // nếu dư mà khác 0. lập tức báo sai
flag = 0;
n /= 3;
}
if (flag == 1)
return 1;
else
return 0;
}
Kết quả khi chạy chương trình:
>>Có thể bạn quan tâm; Kiểm tra số n có dạng 2^k không
Theo Đinh Quang Trưởng
Đề bài:
Kiểm tra số nguyên 4 byte có dạng 3^k hay không?
Dưới đây là đoạn code tham khảo:
#include<iostream>
#include <conio.h>
using namespace std;
int check(int n);
int main()
{
int i;
int max = 10000;
cout << "cac so co dang 2^k trong khoang [0," << max << "]:\n"
for (i = 0; i < 10000; i++)
check(i) ? cout<<i : cout<<" ";
system("pause");
}
/* Số có dạng 3^k
3^1 = 3
3^2 = 9
3^3 = 27
3^4 = 81
VD: kiểm tra số 81
81 % 3 = 27 dư 0
27 % 3 = 9 dư 0
9 % 3 = 3 dư 0
3 % 3 = 1 dư 0 => hết
VD: kiểm tra số 12
12 % 3 = 4 dư 0
4 % 3 = 1 dư 1 ==> sai
*/
int check(int n)//hàm kiểm tra dang 3^k
{
int flag = 1;
n = n < 0 ? -n : n;
if (n < 2)
return 1;
/* while(n > 1)
{
if(n % 3)
return 0;
n /= 3;
}
return 1;*/
while (n > 1)
{
int du = n % 3;
if (du != 0) // nếu dư mà khác 0. lập tức báo sai
flag = 0;
n /= 3;
}
if (flag == 1)
return 1;
else
return 0;
}
Kết quả khi chạy chương trình:
![]() |
kết quả thiếu mất số 6561 (do ko đủ màn hình) |
Theo Đinh Quang Trưởng
