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
。