Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <cstring>
- #include <iostream>
- #include <vector>
- #include <algorithm>
- #include <set>
- //#include <windows.h>
- //#include <conio.h>
- #include <cstdlib>
- #include <time.h>
- #include <limits.h>
- #include <string>
- #include <math.h>
- using namespace std;
- #if defined(_MSC_VER) || __cplusplus > 199711L
- #define aut(r,v) auto r = (v)
- #else
- #define aut(r,v) typeof(v) r = (v)
- #endif
- #define forA(V) for (aut(it,(V).begin());it!=(V).end();it++)
- #define pb push_back
- #define mp make_pair
- #define fi first
- #define se second
- #define ll long long
- #define ull unsigned ll
- #define MOD 1000000007
- #define INF (1<<31)-1
- #define MINF -(1<<31)
- #define vi vector <int>
- #define vll vector <ll>
- #define pii pair <int,int>
- #define pll pair <ll,ll>
- #define newl printf("\n")
- int sol[7],fact[10]={1,1,2,6,24,120,720,5040,40320,362880},N;
- vi nr;
- bool used[1000005];
- void bkt(int k)
- {
- if (k==7)
- {
- int x=0,s=0;
- for (int i=1;i<k;i++)
- {
- x=x*10+sol[i];
- if (sol[1]!=0) s+=fact[sol[i]];
- if (s==x && !used[x] && x!=0)
- nr.pb(x),used[x]=true;
- }
- return;
- }
- for (int i=0;i<=9;i++)
- {
- sol[k]=i;
- bkt(k+1);
- }
- }
- int main()
- {
- scanf("%d",&N);
- bkt(1);
- sort(nr.begin(),nr.end());
- bool ok=false;
- forA(nr) if (*it==N) printf("Number is valid.\n"),ok=true;
- if (!ok) printf("Number is invalid.\n");
- forA(nr) printf("%d ",*it);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement