Nội dung bài viết
La Kiến Vinh Số IO viết tắt của số STDIO, bài viết định nghĩa về số IO, cách thức sinh ra và tìm số IO của 1 số khác. Số IO được ứng dụng khá tốt trong việc đào tạo kỹ thuật lập trình và tùy vào độ linh hoạt của người sử dụng có thể ứng dụng vào nhiều lĩnh vực khác nhau.

Giới thiệu

Bài viết định nghĩa về số STDIO của 1 con số, gọi tắt là số IO, cách thức tính ra số IO đơn giản và được tính trên hệ thập phân.

*Lưu ý rằng định nghĩa của IO không nằm trong các hệ thống chuẩn về toán học mà dành cho mục tiêu cá nhân, do đó các bạn xem dưới mức độ tham khảo, nếu bạn có khả năng ứng dụng được nó, bạn có thể chia sẻ thêm để định nghĩa này càng hoàn thiện.

Tiền đề bài viết

Bài viết ra đời nhằm tạo ra thêm định nghĩa để hỗ trợ cho các đối tượng mới học lập trình từ yêu cầu bài toán hiện thực hóa thành giải thuật cơ bản. Ngoài ra còn là tài liệu tham khảo của khóa đào tạo lập trình C++ tại STDIO Training.

Đối tượng hướng đến

Bài viết hướng đến các đối tượng mới học lập trình cần có 1 số yêu cầu để ứng dụng các cấu trúc điều kiện và vòng lặp.

Số IO

Định nghĩa

Số STDIO của 1 số (hay còn gọi là số IO) là 1 ánh xạ thập phân theo 10 mũ số lượng ký số trừ cho chính nó sao cho số lượng ký số của kết quả phải bằng với số lượng ký số của nó.

Công thức

io_number_equation

Công thức tính ra số IO chỉ hợp lệ khi và chỉ khi n thỏa mãn điều kiện sau

io_number_condition

Ví dụ

Tính số STDIO (số IO) của số 395

  • 395 có 3 ký số nên ta tính 10 mũ 3 là 1000.
  • Lấy 1.000 - 395 ta được 605.
  • 605 có 3 ký số bằng với 395 cũng có 3 ký số vậy 605 là IO của 395.

Tính số STDIO (số IO) của số 9991

  • 9991 có 4 ký số nên ta tính 10 mũ 4 là 10.000.
  • Lấy 10.000 - 9991 ta được 9.
  • 9 có 1 ký số không bằng với 9991 có 3 ký số vậy không tồn tại IO của 9991.

Giải thuật trong lập trình

  • Xét số N, nếu là số nhỏ hơn 10 thì không tồn tại số IO.
  • Đếm số lượng ký số length_N của số N.
  • Tìm số có giá trị M sao cho kết quả là 10 ^ length_N - N.
  • Tính số lượng ký số length_M của số M.
  • So sánh length_M và length_N, nếu bằng nhau thì M chính là số IO, ngược lại không tồn tại số IO của N.

Hàm tính số IO trên C

int countNumberOfDigits(int _number)
{
	int lengthNumber = 1;
	
	while (_number > 10)
	{
		_number /= 10;
		lengthNumber++;
	}
	
	return lengthNumber;
}

int computeTenTo(int _number)
{
	int result = 1;
	
	for (int index = 0; index < _number; index++)
	{
		result *= 10;
	}
		
	return result;
}

int computeSTDIONumber(int _number)
{
	if (_number < 10)
		return -1;
		
	int length_N = countNumberOfDigits(_number);
	
	int M = computeTenTo(length_N) - _number;
	
	return (countNumberOfDigits(M) == length_N ? M : -1);
}
THẢO LUẬN
ĐÓNG