AtCoder abc336 A~D题解

发布时间:2024年01月15日

A.

题目翻译:

对于正整数 X X X 级别的龙串, X X X 是长度为 ( X + 3 ) (X+3) (X+3) 的字符串,由按此顺序排列的 ong 的一次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) 的字符串,由按此顺序排列的 ong 的一次L X X X次出现形成。

你得到一个正整数 N N N。打印 N N N 级的龙串。

分析

按题目要求做即可……,输出一个 L,循环 X X X 次输出 o,再输出 ng

文章来源:https://blog.csdn.net/zc2000911/article/details/135612435
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。