ILSMATH - Đếm số giai thừa !

Tác giả: RR

Ngôn ngữ: C++

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <vector>
#include <set>
#include <map>
#include <stack>
#include <queue>
#include <string>
#include <deque>
#include <complex>

#define FOR(i,a,b) for(int i=(a),_b=(b); i<=_b; i++)
#define FORD(i,a,b) for(int i=(a),_b=(b); i>=_b; i--)
#define REP(i,a) for(int i=0,_a=(a); i<_a; i++)
#define ll long long
#define F first
#define S second
#define PB push_back
#define MP make_pair
using namespace std;

const double PI = acos(-1.0);

int main() {
//    freopen("input.txt", "r", stdin);
//    freopen("output.txt", "w", stdout);
    int n; cin >> n;
    n--;
    double sum = 0.0;
    int first = 1;
    while (sum < n) first++, sum += log(first) / log(10.0);
    if (sum > n+1) {
        puts("NO");
        return 0;
    }
    int last = first;
    while (sum < n+1) last++, sum += log(last) / log(10.0);
    last--;
    if (n == 0) first = 0;
    cout << last - first + 1 << endl;
    FOR(i,first,last) cout << i << endl;
    return 0;
}

Download