构造——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<<'
';
            continue;
        } 
        
        for(int i=cnt3;i>=2;i--){
            while(n>=C[i]){
                n-=C[i];printf("1");
            }
            cout<<3;
        }
        cout<<3;
        cout<<7<<'
';
    }
}
原文地址:https://www.cnblogs.com/zsben991126/p/11437704.html