A.
题目翻译:
对于正整数
X
X
X 级别的龙串,
X
X
X 是长度为
(
X
+
3
)
(X+3)
(X+3) 的字符串,由按此顺序排列的 o
、n
和 g
的一次L
、
X
X
X次出现形成。
你得到一个正整数 N N N。打印 N N N 级的龙串。
分析
按题目要求做即可……,输出一个 L
,循环
X
X
X 次输出 o
,再输出 ng
。
B.
题目翻译:
对于正整数 X X X, c t z ( X ) ctz(X) ctz(X) 是 X X X 的二进制符号末尾连续零的(最大)个数。
给你一个正整数 N N N. 打印 c t z ( N ) ctz(N) ctz(N)。
分析
C++有一个函数叫 __builtin_ctz(X)
其中
X
X
X 为参数,可以帮你求出
X
X
X 二进制下末尾连续零的个数,或者算一个 lowbit
再输出
log
2
(
l
o
w
b
i
t
)
\log_2(lowbit)
log2(lowbit) 即可。
代码
#include <bits/stdc++.h>
#define debug puts("Y")
using namespace std;
int main(){
int n;
cin >> n;
int lowbit = n & -n;
cout << log2(lowbit);
return 0;
}
C.
题目翻译:
一个非负整数 n n n 满足以下条件时称为好整数:
在十进制符号中 n n n 都是偶数 ( 0 , 2 , 4 , 6 , 8 ) ( 0, 2, 4, 6,8) (0,2,4,6,8). 例如 0 , 68 0, 68 0,68 和 2024 2024 2024 都是不错的整数。
给你一个整数 N N N. 求第个 N N N 好整数。
分析
看成 5 5 5 进制,由于 0 0 0 也算好整数所以将 n − 1 n-1 n−1 转化为 5 5 5 进制,在跟 0 , 2 , 4 , 6 , 8 0,2,4,6,8 0,2,4,6,8 一一对应即可。
代码
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n;
string t = "02468", ans;
stack <char> stk;
signed main(){
cin >> n;
if(n == 1){
cout << "0";
return 0;
}
n --;
while(n != 0){
stk.push(t[n % 5]);
n /= 5;
}
while(!stk.empty()){
cout << stk.top();
stk.pop();
}
}
D.
A.
题目翻译:
对于正整数
X
X
X 级别的龙串,
X
X
X 是长度为
(
X
+
3
)
(X+3)
(X+3) 的字符串,由按此顺序排列的 o
、n
和 g
的一次L
、
X
X
X次出现形成。
你得到一个正整数 N N N。打印 N N N 级的龙串。
分析
按题目要求做即可……,输出一个 L
,循环
X
X
X 次输出 o
,再输出 ng
。