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 :
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; }
dài quá
Trả lờiXóatối ưu trong 1 hàm tìm số strong sẽ ngắn gọn dễ hiểu hơn