Trang chủ Tin Học Lớp 6 C++ ạ Bài 19. Nén số (CTC) Tên file: NENSO.***...

C++ ạ Bài 19. Nén số (CTC) Tên file: NENSO.*** Ta gọi phép nén một số nguyên là tính tổng các chữ số của nó. Dễ thấy, sau một số phép nén, thì số còn lại

Câu hỏi :

C++ ạ Bài 19. Nén số (CTC) Tên file: NENSO.*** Ta gọi phép nén một số nguyên là tính tổng các chữ số của nó. Dễ thấy, sau một số phép nén, thì số còn lại chỉ có một chữ số và ko nén được nữa. Ta gọi số đó là số nén tối giản. Ví dụ cho số 86. Sau phép nén thứ nhất ta đk: 8+6=14. Sau phép nén thứ 2: 1+4=5 => Số nén tối giản của 86 là 5. Cho một số nguyên hãy tìm số nén tối giản của nó. Input: Chứa số nguyên dương N Output: Số nén tối giản tương ứng của N Ví dụ INPUT OUTPUT 111 3 57871 1 Bài 20. Phân tích số Tên file: phantich.*** Nhập một số nguyên dương n (n 10^9). Hãy phân n thành tích của hai số nguyên dương x và y (trong đó x y) sao cho tổng của chúng là nhỏ nhất. Input: số nguyên dương n. Output: 2 số nguyên dương x và y. Ví dụ: INPUT OUTPUT 6 2 3 Giải thích ví dụ: 6 có 2 cách phân tích thành tích của 2 số nguyên là (1, 6) và (2, 3); trong đó cách phân tích thành 2 số 2 và 3 cho kết quả tổng nhỏ hơn. Bài 22. SONGUON - Số nguồn Tên file: SONGUON.*** Xét một số N nguyên dương, Ví dụ: N = 836, xét tổng M = 836 + 8 + 3 +6 = 853, khi đó ta gọi số N = 836 là số nguồn của số M = 853. Có những số có thể có nhiều nguồn, ví dụ số: M = 909 có hai số nguồn là 891 và 900. Cho trước số M (M 2*10^9). Nhiệm vụ của bạn là tìm số nguồn của M, nếu như M có nhiều nguồn thì đưa ra kết quả là số nguồn nhỏ nhất. Input: Số nguyên dương M Output: Số nguồn nhỏ nhất của số M, trường hợp không tìm được số nguồn của M thì đưa ra -1. Ví dụ: input Output 21 15 909 891 3 -1

Lời giải 1 :

Bài 19

#include <iostream>
using namespace std;
int zip(int n){
 int sum = 0;
 while (n > 0){
  sum += n % 10;
  n = n / 10;
 }
 return sum;
}
int main(){
 int n;
 cin >> n;
 while (n > 9) n = zip(n);
 cout << n;
 return 0;
}

Bài 20

#include <iostream>
#include <vector>
#include <math.h>
using namespace std;
vector<int> divisor(int n){
 vector<int> arr;
 for (int i = 1; i <= sqrt(n); i++){
  if (n % i == 0){
   if (n/i == i) arr.push_back(i);
   else {
    arr.push_back(i);
    arr.push_back(int(n/i));
   }
  }
 }
 return arr;
}
int main(){
 int n;
 cin >> n;
 vector<int> arr = divisor(n);
 int x = arr[0];
 int y = n / x;
 int min = x + y;
 for (int i = 0; i < arr.size(); i++){
  int xTmp  = arr[i];
  int yTmp = n / xTmp;
  if (xTmp + yTmp < min){
   x = xTmp;
   y = yTmp;
   min = xTmp + yTmp;
  }
 }
 cout << x << " " << y;
 return 0;
}

Bài 22

#include <iostream>
#include <vector>
using namespace std;
int len(int n){
 int count = 0;
 while (n > 0){
  count += 1;
  n = n / 10;
 }
 return count;
}
int min(vector<int> arr){
 int min = arr[0];
 for (int i = 0; i < arr.size(); i++){
  if (arr[i] < min) min = arr[i];
 }
 return min;
}
int sum( int n){
 int s = 0;
 while (n > 0){
  s += n % 10;
  n = n / 10;
 }
 return s;
}
int main(){
 int n;
 vector<int> arr;
 cin >> n;
 for (int i = 9*len(n); i >= 0; i--){
  int tmp = n - i;
  if (tmp + sum(tmp) == n){
   arr.push_back(tmp);
  }
 }
 if (arr.size() == 0){
  cout << -1;
 } else {
  cout << min(arr);
 }
}

Thảo luận

Bạn có biết?

Tin học, tiếng Anh: informatics, tiếng Pháp: informatique, là một ngành khoa học chuyên nghiên cứu quá trình tự động hóa việc tổ chức, lưu trữ, xử lý và truyền dẫn thông tin của một hệ thống máy tính cụ thể hoặc trừu tượng (ảo). Với cách hiểu hiện nay, tin học bao hàm tất cả các nghiên cứu và kỹ thuật có liên quan đến việc mô phỏng, biến đổi và tái tạo thông tin.

Nguồn : Wikipedia - Bách khoa toàn thư

Tâm sự 6

Lớp 6 - Là năm đầu tiên của cấp trung học cơ sở. Được sống lại những khỉ niệm như ngày nào còn lần đầu đến lớp 1, được quen bạn mới, ngôi trường mới, một tương lai mới!

Nguồn : ADMIN :))

Copyright © 2021 HOCTAP247