Educational Codeforces Round 81 (Rated for Div. 2)

A. Display The Number (CF 1295 A)

题目大意

给\(n\)个火柴棒,问摆出的最大数字是多少?摆出每个数字所需要的火柴棒参照红绿灯。
Educational Codeforces Round 81 (Rated for Div. 2)

解题思路

贪心即可。不断放\(1\),最后如果剩下一个火柴棒则最高位变成\(7\)。


神奇的代码

#include <bits/stdc++.h>
#define MIN(a,b) ((((a)<(b)?(a):(b))))
#define MAX(a,b) ((((a)>(b)?(a):(b))))
#define ABS(a) ((((a)>0?(a):-(a))))
using namespace std;
typedef long long LL;
typedef vector<int> VI;
typedef pair<int,int> PII;
typedef vector<PII> VPII;
typedef vector<LL> VL;
typedef pair<LL,LL> PLL;
typedef vector<PLL> VPLL;

template <typename T>
void read(T &x) {
    int s = 0, c = getchar();
    x = 0;
    while (isspace(c)) c = getchar();
    if (c == 45) s = 1, c = getchar();
    while (isdigit(c)) x = (x << 3) + (x << 1) + (c ^ 48), c = getchar();
    if (s) x = -x;
}

template <typename T>
void write(T x, char c = ' ') {
    int b[40], l = 0;
    if (x < 0) putchar(45), x = -x;
    while (x > 0) b[l++] = x % 10, x /= 10;
    if (!l) putchar(48);
    while (l) putchar(b[--l] | 48);
    putchar(c);
}

int main(void) {
    int kase; read(kase);
    for (int i = 1; i <= kase; i++) {
        int n;
        read(n);
        int a[100500]={0};
        int cnt=-1;
        while(n>=2){
            a[++cnt]=1;
            n-=2;
        }
        if (n==1) a[cnt]=7;
        for(int i=cnt;i>=0;--i) putchar(a[i]+'0');
        puts("");
    }
    return 0;
}
上一篇:中国剩余定理


下一篇:916