姓名
- 王胤皓
T1 题解
T1 题面
T1 思路
样例输入就是骗人的,其实直接输出就可以了,输出 Hello 2024
,注意,中间有一个空格!
T1 代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main(){
cout<<"Hello 2024";
return 0;
}
T2 题解
T2题面
T2 思路
计算 2x2^x2x 次方,可以使用 C++ 中自带的位运算。
接下来将详细介绍位运算:
位运算是计算机中一种常用的运算方式,它直接对二进制数据进行操作。C++语言提供了多种位运算操作符与函数,可以方便地进行位运算。
一、位运算的基础概念
- 二进制表示:在计算机中,所有的数据都是以二进制形式表示的。一个二进制位可以表示0或1,多个二进制位可以表示更大的数值。
- 位运算操作符:C++提供了多种位运算操作符,包括与(&)、或(|)、异或(^)、取反(~)等。
- 位运算函数:C++提供了一些位运算函数,包括位移函数(<<、>>)、位计数函数(__builtin_popcount)、最低位函数(__builtin_ffs)等。
二、位运算操作符
4. 与运算(&):对两个数的二进制位进行逐位比较,若两个位均为1,则结果为1;否则为0。例如,3 & 5的结果是1。
5. 或运算(|):对两个数的二进制位进行逐位比较,若两个位中至少有一个为1,则结果为1;否则为0。例如,3 | 5的结果是7。
6. 异或运算(^):对两个数的二进制位进行逐位比较,若两个位不相同,则结果为1;否则为0。例如,3 ^ 5的结果是6。
7. 取反运算(~):对一个数的二进制位进行逐位取反,即0变为1,1变为0。
例如,~3的结果是-4(以补码形式表示)。
8. 左移运算(<<):将一个数的二进制位向左移动指定的位数,相当于乘以2的指定次幂。例如,3 << 2的结果是12。
9. 右移运算(>>):将一个数的二进制位向右移动指定的位数,相当于除以2的指定次幂。例如,8 >> 2的结果是2。
三、位运算的应用
11. 位运算与(&)常用于掩码操作、判断奇偶性等。例如,可以用掩码操作实现只保留某些位。
12. 位运算或(|)常用于设置某些位为1。例如,可以用位运算将某些位设置为1,而保持其他位不变。
13. 位运算异或(^)常用于交换两个数的值、判断两个数的符号是否相同等。
14. 位运算取反(~)常用于将整数取反。
15. 位运算左移(<<)和右移(>>)常用于对整数进行乘法或除法的优化。例如,一个数左移一位相当于乘以2,右移一位相当于除以2。
四、位运算的特点
16. 位运算是直接对二进制数据进行操作,因此速度较快。
17. 位运算在一些特定场景下可以实现高效的算法,如位图算法、哈希表实现等。
18. 位运算可以用于优化算法性能,减少空间占用。
五、注意事项
19. 在使用位运算时,需要注意位运算的优先级与结合性,可以使用括号来明确运算顺序。
总结:位运算是C++中一种常用的运算方式,可用于对二进制数据进行操作。C++提供了多种位运算操作符和函数,方便进行位运算。位运算具有速度快、可以实现高效算法、可以优化性能的特点。在使用位运算时,需要注意操作符优先级和结合性。
所以直接输出 2n2^n2n 也就是 1<<n1<<n1<<n。
(我绝不会告诉你有人还用快速幂、pow和for循环)
T2 代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main(){
int n;
cin>>n;
cout<<(1<<n);
return 0;
}
T3 题解
T3 题面
T3 O(n)O(n)O(n) 思路
暴力枚举。
遍历 lll 到 rrr,然后如果 iii 为奇数,那么计数器加上 iii,最后进行输出即可。
T3 O(n)O(n)O(n) 代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main(){
int l,r;
cin>>l>>r;
int sum=0;
for(int i=l;i<=r; i++){
if(i&1) sum+=i;
}
cout<<sum;
return 0;
}
T3 O(1) 思路
前置知识(干货):因为 1+3+5+7+9=⌊9+12⌋21+3+5+7+9=\lfloor \frac{9+1}{2}\rfloor^21+3+5+7+9=⌊29+1⌋2,从而得出 1+3+5+⋯+n(nmod 2=1)=⌊n+12⌋21+3+5+\cdots+n(n\mod 2=1)=\lfloor \frac{n+1}{2}\rfloor^21+3+5+⋯+n(nmod2=1)=⌊2n+1⌋2。
接下来进行分类讨论:
- 如果 lll 和 rrr 都是奇数,那么根据约分性质 (a+b+c+d)−(a+b)=c+d(a+b+c+d)-(a+b)=c+d(a+b+c+d)−