【蓝桥杯】“萌新首秀”全国高校新生编程排位赛2

1.世上有10种人

题目

世上有10种人

 代码

1
2
3
4
5
6
7
#include
using namespace std;
int main()
{
  cout<<2;
  return 0;
}

2.01切换

题目

01切换

 题目分析

直接判断字符串最后一个字符是0还是1就好了

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include
using namespace std;
int main()
{
  string str;
  cin>>str;
  int l = str.length();
  if (str[l - 1] ==  '0' )
  {
      str[l - 1] =  '1' ;
  }
  else
  {
      str[l - 1] =  '0' ;
  }
  cout << str;
  return 0;
}

3.数字换字母

数字换字母

题目

题目分析

1.使用映射表将字符串1与数字0~9进行对应

2.对字符串进行检测,碰到数字则进行对应切换

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include  
#include  
#include  
  
using namespace std; 
  
int main()
    // 读取字符串S 
    string S; 
    cin >> S; 
  
    // 创建一个映射表,初始化为空字符,方便后续检查是否映射过 
    vector< char > mapping(10,  '\0' ); 
  
    // 填充映射表 
    for ( int i = 0; i < 10; ++i)
    
        mapping[i] = S[i]; 
    
  
    // 读取字符串T 
    string T; 
    cin >> T; 
  
    // 输出处理后的字符串 
    for ( char c : T)
    
        // 检查c是否为数字字符('0'到'9') 
        if (c >=  '0' && c <=  '9' )
        
            // 根据映射表找到对应的字母 
            cout << mapping[c -  '0' ]; 
        }
        else
        
            // 如果c不是数字,则直接输出 
            cout << c; 
        
    
  
    return 0; 
}

4.智子封锁

智子封锁

题目

 题目分析

1.由于a容易数值过大,我们可以提前计算10的c次方,方便提前取模

2.查看b是否是奇数,如果是奇数则让a*a一次然后进行取模,如果是偶数,则直接进行自乘,节省计算时间

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include  
#include  // 用于pow函数,但这里我们手动实现幂运算以避免浮点误差 
  
using namespace std; 
  
// 快速幂取模函数,用于计算(base^exp) % mod 
long long fastPowMod( long long base long long exp,  long long mod)
    long long result = 1; 
    while (exp > 0)
     
        if (exp % 2 == 1)
        // 如果当前exp是奇数,则乘上当前的base 
            result = (result *  base ) % mod; 
        
        base = ( base base ) % mod;  // base自乘,准备下一次迭代 
        exp /= 2;  // exp减半 
    
    return result; 
  
int main()
 
    int a, b, c; 
    cin >> a >> b >> c; 
  
    // 计算10的c次方,用于取模 
    long long mod = pow(10, c); 
  
    // 使用快速幂取模函数计算a的b次方对mod取模的结果 
    long long result = fastPowMod(a, b, mod); 
  
    cout << result << endl; 
  
    return 0; 

5.加与计数

加与计数

题目

 题目分析

1.观察题目例子,我们可以发现一件事,符合条件的(x,y)组合是对称的,即,只要我们确定了(x,y)符合要求,则(y,x)也肯定符合

2.右移x,y,按位与

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include  
#include
using namespace std;
 
int tenintwo( int n,  int m)
{
    while (n > 0 || m > 0)
    {
        // 检查最低位 
        int bitN = n & 1;  // 提取n的最低位 
        int bitM = m & 1;  // 提取m的最低位 
 
        // 如果n和m的最低位同时为1,则返回1 
        if (bitN && bitM)
        {
            return 1;
        }
 
        // 右移n和m,准备检查下一位 
        n >>= 1;
        m >>= 1;
    }
 
    // 所有位都检查过了,没有发现同时为1的位,返回0 
    return 0;
}
 
int countPairs( int n)
{
    int count = 0;
    for ( int x = 1; x < n/2; ++x)
    {
        int y = n - x;
        if (tenintwo(x, y) == 0)
        {
            ++count;
        }
    }
    return count*2;
}
 
int main()
{
    int n;
    cin >> n;
    cout << countPairs(n) << endl;
    return 0;
}

 

posted @   山远尽成云  阅读(64)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示