构造——cf1202d

Posted zsben991126

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了构造——cf1202d相关的知识,希望对你有一定的参考价值。

和以前有一题构造01串的很像,固定住一个7,求出3的个数,对1的位置进行贪心

/*
   1337  1
  13337  3
 133337  6
1333337 10
*/
#include<bits/stdc++.h>
using namespace std;
#define ll long long 
ll n;
ll C[100005];
int main()
    int t;cin>>t;
    for(ll i=1;i<=100000;i++)
        C[i]=i*(i-1)/2;
    while(t--)
        scanf("%lld",&n);
        ll cnt3=1;
        while(C[cnt3+1]<=n)
            cnt3++;
        if(C[cnt3]==n)
            cout<<1;
            for(int i=1;i<=cnt3;i++)cout<<3;
            cout<<7<<\n;
            continue;
         
        
        for(int i=cnt3;i>=2;i--)
            while(n>=C[i])
                n-=C[i];printf("1");
            
            cout<<3;
        
        cout<<3;
        cout<<7<<\n;
    

 

以上是关于构造——cf1202d的主要内容,如果未能解决你的问题,请参考以下文章

[题解]Print a 1337-string...-数学(codeforces 1202D)

二维差分前缀和——cf1202D(好题)

CF359B Permutation (构造)

CF1053E Euler tour 构造

CF936C Lock Puzzle

构造分组背包(CF)