ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมที่หาจำนวนที่มากที่สุดด้วย m 1 และ m - 1 0
มาดูขั้นตอนการแก้ปัญหากัน
- เริ่มต้นสองตัวแปรบิตและผลลัพธ์ด้วย 2 และ 1 ตามลำดับ
- เขียนลูปที่วนซ้ำจาก 1 ถึง n
- อัปเดตค่าตัวแปรการวนซ้ำด้วย pow(2, bits) - 1) * (pow(2, bits - 1).
- หากตัวแปรวนซ้ำน้อยกว่า n ให้อัปเดตผลลัพธ์ด้วย i
- เพิ่มจำนวนบิตให้มากขึ้น
- ส่งคืน resutl.
ตัวอย่าง
มาดูโค้ดกันเลย
#include <bits/stdc++.h> using namespace std; long long getTheNumber(long long n) { long bits = 2; long long result = 1; long long i = 1; while (i < n) { i = (int)(pow(2, bits) - 1) * (pow(2, bits - 1)); if (i < n) { result = i; } bits++; } return result; } int main() { long long n = 654; cout << getTheNumber(n) << endl; return 0; }
ผลลัพธ์
หากคุณเรียกใช้โค้ดด้านบน คุณจะได้ผลลัพธ์ดังต่อไปนี้
496
บทสรุป
หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น