Chủ đề: Dãy số Morse vô hạn
-
12-05-2014, 08:48 AM #1
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Dãy số Morse vô hạn
Mình có 1 bài tập về Dãy Morse vô hạn M = {x0, x1, …., xn,…} chỉ với 0 và 1 được xác định như sau
Ban đầu M<sub>0</sub> = {x0} = {0}
Ở mỗi bước tiếp theo M<sub>n</sub> = M<sub>n-1</sub> và đảo của M<sub>n-1</sub> ( đổi 0 thành 1, 1 thành 0)
Chẳng hạn:
n = 0 M<sub>0</sub> = {x0} = {0}
n = 1 M<sub>1</sub> = {x0, x1} = {0, 1}
n = 2 M<sub>2</sub> = {x0, x1, x2, x3} = {0, 1, 1, 0}
n = 3 M<sub>3</sub> = {x0, x1, x2, x3, x4, x5, x6, x7} = {0, 1, 1, 0, 1, 0, 0, 1}
n = 4 M<sub>4 </sub>= {x0,x1,x2,x3,....,x14,x15} = {0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0}
Viết chương trình xác định giá trị của xk trong dãy Morse
Chẳng hạn:
k = 0 x<sub>k</sub> = 0
k = 7 x<sub>k</sub> = 1
Theo mình hiểu thì thế này
cho k: -> Tìm n để 2<sup>n</sup> ≤ k ≤ 2<sup>n+1</sup>
Ta có r = K - 2<sup>n</sup>
=> x<sub>k</sub> = ¯(x<sub>r </sub>) (Nghịch đảo của x<sub>r</sub> )
View more random threads:
- Giúp mình với, lỗi devCpp: "Process exited with return value 3221225477"
- Hỏi về phép tính của số thực. VD: 2.9 + 0.1 = 2.9999999
- Đệ Qui Tổng
- Hỏi sửa lỗi bài tập C
- đóng gói ứng dụng ra file .exe
- Tool vẽ lưu đồ thuật toán
- Bài tập C | Code bài tập quản lý sinh viên lỗi ở đâu, giúp mình sửa lỗi?
- cấp phát động
- mọi người sửa dùm em bài này dk ko.em là thành viên ms .mong mọi ngưởi giúp đỡ
- Đối số mảng truyền cho hàm?
-
12-05-2014, 01:36 PM #2
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Tính even bit parity của n ấy.
-
13-05-2014, 08:27 AM #3
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int k;
cout << "Nhap so k: "<< endl;
cin >> k;
//do for first two array of morse(k = 0, k = 1)
if(k == 0 || k == 1)
{
cout << k << endl;
return 0;
}
//for k > 1
//create very first morse list: {0,1} -- k = 1
vector<int> firstList;
firstList.push_back(0);
firstList.push_back(1);
vector<int>myList = firstList;
//create k-morse list
int myFirstK = k;
do
{
//************************
if(myFirstK < myList.size())
{
cout << myList.at(myFirstK) << endl;
return 0;
}
//*************************
vector<int> tempList = myList;
/ow: myList: is M(n-1)
//tempList will become inverse of M(n-1)
//concadinate myList + tempList(After bit inversion) ---> new myList
for(int i = 0; i < tempList.size(); ++i)
{
//inverse bit
tempList.at(i) = (tempList.at(i) + 1) % 2;
}
for(int i = 0; i < tempList.size(); ++i)
{
//concadinate
myList.push_back(tempList.at(i));
}
k--;
tempList.clear();
}
while(k > 1);
cout << "xk = " << myList.at(k) << endl;
return 0;
}
Đây là source mình code thử, bạn chạy xem thử có đúng không? ^^
Nếu bạn không hiểu đoạn: //****************** ... //******************
Bạn có thể bỏ nó đi và chạy thử. sẽ hiểu ngay. Chúc vui nha.
-
13-05-2014, 12:48 PM #4
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
^ Không cần thiết.
-
15-05-2014, 12:47 PM #5
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi tanth90
Nó báo chạy được rồi bạn, nhưng nhập cả sau đó nó hiện kết quả thì cửa sổ console tự đóng luốn, hình như thiếu lệnh dừng màn hình để đọc
Mà vì sao với k=2 thì sẽ cho ra thông báo là "xk=1" còn nhập k khác thì nó chỉ hiện thông báo là 0 hoặc 1
xã hội vững mạnh, nhu cầu mặc đẹp của con người ngày càng cao. ngành công nghiệp thời trang cũng đang vững mạnh chóng vánh. những nhà máy gia công hàng may mặc chẳng thể đóng góp lặng thầm vào sự...
Tìm xưởng may gia công tại TP Hồ...