活着的序列(?
所以说为什么 CF 的题会牵扯到日语啊喂!
思路
去掉了数码 $4$,我们只剩下了 $9$ 个数码即 $0 \sim 3$ 与 $5 \sim 9$。容易想到题目中的序列就是九进制下的正整数表,只不过把大于等于 $4$ 的数码都加了个 $1$。
于是我们也可以这么做。
代码
对不起,但是这个火车头,它……
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <string>
#include <cstring>
#include <cctype>
#include <cmath>
#include <vector>
#include <stack>
#include <queue>
#include <deque>
#include <map>
using namespace std;
typedef long long ll;
const int inf = 0x3f3f3f3f;
#define elif else if
int t;
ll n;
ll slv(ll x)
{
ll ans = 0, s10 = 1;
while (x > 0)
{
ll tmp = x % 9;
if (tmp >= 4)
tmp++;
ans += tmp * s10;
x /= 9, s10 *= 10;
}
return ans;
}
int main()
{
cin >> t;
for (int i = 1; i <= t; i++)
{
cin >> n;
cout << slv(n) << endl;
}
return 0;
}