当前位置:网站首页>CDZSC_2022寒假个人训练赛21级(2)
CDZSC_2022寒假个人训练赛21级(2)
2022-07-07 07:09:00 【moyangxian】
A
题解:输出n, 1, 2, 3, 4…即可。
#include<bits/stdc++.h>
using namespace std;
void solve() {
int n;
scanf("%d", &n);
printf("%d", n);
for (int i = 2; i <= n; i++)
printf(" %d", i - 1);
printf("\n");
}
signed main() {
int T;
scanf("%d", &T);
while (T--) solve();
return 0;
}
B
题解:首先能想到符合条件的数很少,总共就81个;所以直接枚举这些数去判断是否小于等于n即可。
#include<bits/stdc++.h>
using namespace std;
void solve() {
int n;
scanf("%d", &n);
int ans = 0;
for (int i = 1; i <= 9; i++) {
int x = 0;
for (int j = 1; j <= 9; j++) {
x = x * 10 + i;
if (n >= x) ans++;
}
}
printf("%d\n", ans);
}
signed main() {
int T;
scanf("%d", &T);
while (T--) solve();
return 0;
}
C
题解:可以想象一下方块右移的过程,比如:
4 2 右移后–> 2 4
实际上就是两个数交换了位置,那么答案就是排序之后的数组。
#include<bits/stdc++.h>
using namespace std;
const int N = 110;
int a[N];
signed main() {
int n;
scanf("%d", &n);
for (int i = 1; i <= n; i++)
scanf("%d", &a[i]);
sort(a + 1, a + 1 + n);
for (int i = 1; i <= n; i++) {
if (i == 1) printf("%d", a[i]);
else printf(" %d", a[i]);
}
printf("\n");
return 0;
}
D
题解:逆向思维一下,我们可以从b往a去推,那么b的操作也是两种
- b是偶数的前提下除2
- b的最后一位是1的前提下去掉最后一位
这两种操作是互相独立的,所以b可以反复去做这两种操作直到没法操作或者b<=a为止,最后判断b是否等于a即可。
#include<bits/stdc++.h>
using namespace std;
signed main() {
int a, b;
scanf("%d%d", &a, &b);
vector<int> ans;
while (b > a) {
if (b & 1) {
if (b % 10 == 1) {
b /= 10;
ans.push_back(10);
}
else break;
}
else {
b >>= 1;
ans.push_back(2);
}
}
reverse(ans.begin(), ans.end());
if (a == b) {
printf("YES\n");
printf("%d\n", ans.size() + 1);
printf("%d", a);
for (auto x : ans) {
if (x == 10) a = a * 10 + 1;
else a <<= 1;
printf(" %d", a);
}
}
else {
printf("NO\n");
}
return 0;
}
E
题解:可以先确定一个最小值,然后删掉比它小的数和与最小值差值大于d的数得到答案。以数组里每一个数都为最小值做一遍,答案取最小值即可。
#include<bits/stdc++.h>
using namespace std;
const int N = 110;
int a[N];
signed main() {
int n, d;
scanf("%d%d", &n, &d);
for (int i = 1; i <= n; i++)
scanf("%d", &a[i]);
sort(a + 1, a + 1 + n);
int ans = n;
for (int i = 1; i <= n; i++) {
int cnt = n - 1;
for (int j = i + 1; j <= n; j++)
if (a[j] >= a[i] && a[j] - a[i] <= d) cnt--;
ans = min(ans, cnt);
}
printf("%d\n", ans);
return 0;
}
F
知识点:二进制的理解
题解:首先将n变成二进制形式,从高位往低位拆,看一下能不能拆到n的每一位之和等于k,比如题目第一个样例:
9 4
9 --> 1001
sum(所有位数之和) = 2
1001 --> 0201
sum = 3
0201 --> 0121
sum = 4
0121 = 0 * 23 + 1 * 22 + 2 * 21 + 1 * 20
#include<bits/stdc++.h>
using namespace std;
const int N = 100;
int a[N], tot;
signed main() {
int n, k;
scanf("%d%d", &n, &k);
int sum = 0;
while (n) {
if (n & 1) sum++, a[++tot] = 1;
else a[++tot] = 0;
n >>= 1;
}
while (sum < k) {
if (tot == 1) break;
a[tot]--;
a[tot - 1] += 2;
sum++;
if (a[tot] == 0) tot--;
}
if (sum != k) printf("NO\n");
else {
printf("YES\n");
for (int i = 1; i <= tot; i++) {
for (int j = 1; j <= a[i]; j++)
printf("%d ", (1 << (i - 1)));
}
printf("\n");
}
return 0;
}
G
题解:首先我们按奇数和偶数把1~n分成两个数组,把奇数数组倒序输出,偶数数组的even[0]和even[1]换一下顺序然后输出即可。
例如:n = 11
odd : 1 3 5 7 9 11 —> 11 9 7 5 3 1
even : 2 4 6 8 —> 4 2 6 8
ans : 11 9 7 5 3 1 4 2 6 8
答案不唯一,网上还有很多构造方法,可自行查找
#include<bits/stdc++.h>
using namespace std;
void solve() {
int n;
scanf("%d", &n);
if (n < 4) {
printf("-1\n");
return;
}
else {
vector<int> odd, even;
for (int i = 1; i <= n; i += 2)
odd.push_back(i);
for (int i = 2; i <= n; i += 2)
even.push_back(i);
reverse(odd.begin(), odd.end());
for (int i = 0; i < odd.size(); i++)
printf("%d ", odd[i]);
printf("%d %d", even[1], even[0]);
for (int i = 2; i < even.size(); i++)
printf(" %d", even[i]);
printf("\n");
}
}
signed main() {
int T;
scanf("%d", &T);
while (T--) solve();
return 0;
}
边栏推荐
- Niuke - Huawei question bank (61~70)
- 数据建模中利用3σ剔除异常值进行数据清洗
- 根据热门面试题分析Android事件分发机制(二)---事件冲突分析处理
- JMeter JDBC batch references data as input parameters (the simplest method for the whole website)
- Upload taro pictures to Base64
- 浏览器中如何让视频倍速播放
- How to become a senior digital IC Design Engineer (5-2) theory: ULP low power design technology (Part 1)
- 基于智慧城市与储住分离数字家居模式垃圾处理方法
- 第一讲:寻找矩阵的极小值
- 其实特简单,教你轻松实现酷炫的数据可视化大屏
猜你喜欢

csdn涨薪技术-浅学Jmeter的几个常用的逻辑控制器使用

基于智慧城市与储住分离数字家居模式垃圾处理方法

Elaborate on MySQL mvcc multi version control

Information Security Experiment 1: implementation of DES encryption algorithm

Mysql:select ... for update

四、机器学习基础

Unity shader (to achieve a simple material effect with adjustable color attributes only)

NATAPP内网穿透

Oracle安装增强功能出错

How will fashion brands enter the meta universe?
随机推荐
第一讲:包含min函数的栈
flex弹性布局
Regular matching starts with XXX and ends with XXX
IIS faked death this morning, various troubleshooting, has been solved
如何使用clipboard.js库实现复制剪切功能
MongoDB怎么实现创建删除数据库、创建删除表、数据增删改查
Huawei hcip datacom core_ 03day
Unity shader (learn more about vertex fragment shaders)
js逆向教程第二发-猿人学第一题
[4G/5G/6G专题基础-147]: 6G总体愿景与潜在关键技术白皮书解读-2-6G发展的宏观驱动力
信息安全实验一:DES加密算法的实现
印象笔记终于支持默认markdown预览模式
(3/8) method parameters of improper use of enumeration (2)
**Grafana installation**
**grafana安装**
Dynamics 365online applicationuser creation method change
【frida实战】“一行”代码教你获取WeGame平台中所有的lua脚本
超十万字_超详细SSM整合实践_手动实现权限管理
根据热门面试题分析Android事件分发机制(二)---事件冲突分析处理
[4G/5G/6G专题基础-146]: 6G总体愿景与潜在关键技术白皮书解读-1-总体愿景