1 条题解

  • 3
    @ 2024-7-16 9:59:18

    构造满足条件的最小正整数显然需要优先放 99,并且要把 99 尽可能放在后面,比如 1818 就要构造成 189189,由此可得如下代码:

    #include<bits/stdc++.h>
    using namespace std;
    int main(){
    	int t;
    	cin>>t;
    	for(int i=1;i<=t;i++){
    		int n;
    		string s="";
    		cin>>n;
    		if(n>45){
    			cout<<-1<<endl;
    			continue;
    		}
    		for(int j=9;j>=1;j--){
    			if(j<=n){
    				s+=char(j+'0');
    				n-=j;
    			}else if(n!=0){
    				s+=char(n+'0');
    				break;
    			}
    		}
    		for(int j=s.length()-1;j>=0;j--) cout<<s[j];
    		cout<<endl;
    	}
    }
    
    • 1

    信息

    ID
    756
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    递交数
    111
    已通过
    30
    上传者