B. 【六月份 -- 基础语法组】-- T2 -- 幸运数
zhangyuqiTAT · · 个人记录
https://cspjs.online/contest/699/problem/2
#include <iostream>
#include <stdio.h>
using namespace std;
typedef long long ll;
ll a[110];
int main() {
freopen("lucknum.in", "r", stdin);
freopen("lucknum.out", "w", stdout);
for (int i = 1; i <= 55; i++) {
a[i] = a[i - 1] + (1ll << i);
}
long long n;
cin >> n;
for (int i = 55; i >= 1; i--) {
if (a[i - 1] < n) {
if (n - (1ll << (i - 1)) > a[i - 1]) {
cout << 7;
n -= (1ll << i);
} else {
cout << 2;
n -= (1ll << (i - 1));
}
}
}
return 0;
}