Hãy luôn nhớ cảm ơn và vote 5*
nếu câu trả lời hữu ích nhé!
Đây là câu trả lời đã được xác thực
Câu trả lời được xác thực chứa thông tin chính xác và đáng tin cậy, được xác nhận hoặc trả lời bởi các chuyên gia, giáo viên hàng đầu của chúng tôi.
Để giúp An xác định con số nào đã được biến đổi thành con số nào, ta có thể sử dụng một cấu trúc dữ liệu là một hashmap (bản đồ băm) trong C++. Trong hashmap, chúng ta lưu trữ mỗi cặp key-value, trong đó key là con số đã được biến đổi và value là con số gốc trước khi biến đổi.
*Code mẫu:
#include <iostream>
#include <unordered_map>
using namespace std;
void findOriginalNumbers(int A) {
unordered_map<int, int> transformedToOriginal;
// Dùng một vòng lặp để biến đổi và lưu trữ các giá trị
while (A <= 1000000) {
transformedToOriginal[A] = A / 2;
A = A * 2 + 1;
}
// In ra các cặp key-value trong hashmap
for (const auto& entry : transformedToOriginal) {
cout << "Sau khi biến đổi " << entry.first << " ta được " << entry.second << endl;
}
}
int main() {
int A;
cout << "Nhập số nguyên không âm A: ";
cin >> A;
findOriginalNumbers(A);
return 0;
}
*Giải thích
1. Trong hàm findOriginalNumbers(), chúng ta tạo một hashmap transformedToOriginal để lưu trữ các cặp giá trị đã biến đổi.
2. Sử dụng vòng lặp while, chúng ta thực hiện biến đổi và lưu trữ các giá trị trong hashmap. Trong vòng lặp, chúng ta gấp đôi giá trị của A, sau đó cộng thêm số 1 và lưu trữ cặp key-value trong hashmap.
3. Cuối cùng, chúng ta duyệt qua các cặp key-value trong hashmap và in ra màn hình để hiển thị kết quả.
Để chạy chương trình, nhập số nguyên không âm A từ bàn phím và nó sẽ in ra các con số đã được biến đổi và con số gốc tương ứng.
Hãy giúp mọi người biết câu trả lời này thế nào?
#include<bits/stdc++.h>
using namespace std;
int main(){
int a;
cin>>a; //Nhập giá trị A
vector<int> v; //Sử dụng vector để lưu trữ kết quả của mỗi lần biến đổi
//Lưu giá trị ban đầu của A
v.push_back(a);
//Thực hiện 10 lần biến đổi và lưu trữ kết quả vào vector
for(int i=1; i<=10; i++){
a = a*2 + 1; //Thực hiện các thao tác
v.push_back(a); //Lưu trữ kết quả vào vector
}
//In ra kết quả của từng con số
for(int i=0; i<=10; i++){
cout<<"A["<<i<<"] = "<<v[i]<<endl;
}
return 0;
}
Hãy giúp mọi người biết câu trả lời này thế nào?
Bảng tin