Tìm số Strong trong khoảng cho trước

Đề bài : Viết chương trình cho phép nhập vào hai số nguyên dương và tìm tất cả các số Strong (là số có tổng giai thừa các chữ số bằng chính nó) nằm trong khoảng đó (nếu không tồn tại số nào thì in ra 0)
INPUT
1 1000
OUTPUT
1 2 145
Giải :


#include<iostream>
using namespace std;
int n,m;
void input() {
 cin >> n;
 cin >> m;
}
int giaithua(int n) {
 int t=1;
 for(int i = 1; i <= n; i++) {
  t = t*i;
 }
 return t;
}

int tong(int n) {
 int tong=0;
 int m=n;
 while(n>0) {
  int t=n%10;
  tong = tong + giaithua(t);
  n = n/10;
 }
 if(tong==m) return 1;
 else return 0;
}

int main() {
 input();
 if(n <= m) {
  for(int i = n; i <= m; i++) {
   if(tong(i)) cout << i << " ";
  }
 } else {
  for(int i = m; i <= n; i++) {
   if(tong(i)) cout << i << " ";
  }
 }
 return 0;
}

Nhận xét

  1. dài quá
    tối ưu trong 1 hàm tìm số strong sẽ ngắn gọn dễ hiểu hơn

    Trả lờiXóa

Đăng nhận xét

Bài đăng phổ biến từ blog này

Đổi chỗ chữ số đầu tiên và chữ số cuối cùng của một số

Chuyển đơn vị đo nhiệt độ C và F

Tìm số đẹp (lộc phát)