题解:CF2035B Everyone Loves Tres

· · 题解

CF2035B Everyone Loves Tres 题解

题目大意

给定 t 组数据,每组数据有一个正整数 n,要求构造一个由数字 36 组成的长度为 n 的整数,该整数需同时满足以下条件:能被 3366 整除。如果无法构造这样的整数,输出 -1

思路

为了解决这个问题,首先需要知道能被 66 整除的条 66 可以分解为 2 \times 3 \times 11 。可以推出数字的最后一位必须是 6,数字的和必须能被 3 整除,并且将数的奇数位数字之和与偶数位数字之和的差,能被 11 整除。

考虑到输入的 n,我们可以得出以下结论:当 n=1n=3 时,由于无法满足条件,直接返回 -1

对于其他 n 的情况,如果 n 是偶数,我们可以构造一个以 66 结尾的数,其余部分用 3 填充;如果 n 是奇数,则最后四位是 6366,前面填充 n−43

Code

#include<bits/stdc++.h>
using namespace std;
int t,n;
int main(){
    scanf("%d",&t);
    for(int i=1;i<=t;i++){
        scanf("%d",&n);
        if(n==1||n==3) printf("-1\n");
        else{
            if(n%2){
                for(int j=1;j<n-3;j++) printf("3");
                printf("6366");
            }
            else{
                for(int j=1;j<n-1;j++) printf("3");
                printf("66");
            }
            cout<<endl;
        }
    }
    return 0;
}