Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define f first
- #define s second
- #define mp make_pair
- #define pb push_back
- #define lp(i,a,n) for(int i=(a);i<=(int)(n);++i)
- #define lpd(i,a,n) for(int i=(a);i>=(int)(n);--i)
- #define clr(a,b) memset(a,b,sizeof a)
- #define all(v) v.begin(),v.end()
- #define println(a) cout <<(a) <<endl
- #define sz(x) ((int)(x).size())
- #define readi(x) scanf("%d",&x)
- #define read2i(x,y) scanf("%d%d",&x,&y)
- #define read3i(x,y,z) scanf("%d%d%d",&x,&y,&z)
- #define readll(x) scanf("%I64d",&x)
- #define mod 1000000007
- #define eps 1e-6
- #define infi 1000000000
- #define infll 1000000000000000000ll
- using namespace std;
- typedef long long ll;
- typedef unsigned long long ull;
- typedef pair<int, int> pii;
- typedef pair<ll, ll> pll;
- typedef vector<int> vi;
- typedef vector<vi> vvi;
- typedef vector<ll> vll;
- typedef set<int> si;
- typedef map<int,int> mii;
- const int N = 20;
- ull n,dp[10][1<<20][15],tenPow[22];
- bool vis[10][1<<20][15],vis1[10][1<<20][15];
- int f[] = {0,1,2,3,5,8,13};
- ull solve(int i,int mask,int d) {
- if(mask == (1<<N)-1) return !d && i;
- if(i > 9) return 0;
- ull &ret = dp[i][mask][d];
- if(vis[i][mask][d]) return ret;
- vis[i][mask][d] = true;
- if(!d)
- lp(j,0,6) ret += solve(i+1,mask,f[j]);
- else {
- int first = 0;
- if(!i)
- while(first < N && (mask&(1<<first))) ++first;
- lp(j,0,N-1) if(!(mask&(1<<j)) && (i || j != first))
- ret += solve(i,mask | (1<<j),d-1);
- }
- return ret;
- }
- ull ans;
- bool done;
- void getAns(int i,int mask,int d,ull n,ull x) {
- if(mask == (1<<N)-1) {
- if(!n) ans = x , done = true;
- return;
- }
- if(done || vis1[i][mask][d] || i > 9) return;
- vis1[i][mask][d] = true;
- if(!d)
- lp(j,0,6) getAns(i+1,mask,f[j],n,x);
- else {
- int first = 0;
- while(first < N && (mask&(1<<first))) ++first;
- lp(j,0,N-1) if(!(mask&(1<<j)) && (i || j != first)) {
- getAns(i,mask|(1<<j),d-1,n,x+tenPow[j-first]*i);
- n -= solve(i,mask | (1<<j),d-1);
- if(n <= 0 || done) return;
- }
- }
- }
- int main(){
- int rep[10] = {0};
- lp(i,1,282475249) {
- int temp = i , sum = 0;
- lp(j,0,9) rep[i] = f[temp%7] , sum += rep[i], temp /= 7;
- if(sum < 20)
- lp(j,0,9) printf("%d %d\n",i,rep[i]);
- clr(rep,0);
- }
- return 0;
- }
- /*
- freopen("input.txt","r",stdin);
- freopen("output.txt","w",stdout);
- ios::sync_with_stdio(0);cin.tie(0);
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement