【30天蓝桥训练】Day11

头发你好自为之 2023-03-14 21:46:01

1.卡片

题目:小蓝有很多数字卡片,每张卡片上都是数字 00 到 99。

小蓝准备用这些卡片来拼一些数,他想从 11 开始拼出正整数,每拼一个,就保存起来,卡片就不能用来拼其它数了。

小蓝想知道自己能从 11 拼到多少。

例如,当小蓝有 3030 张卡片,其中 00 到 99 各 33 张,则小蓝可以拼出 11 到 1010,

但是拼 1111 时卡片 11 已经只有一张了,不够拼出 1111。

现在小蓝手里有 00 到 99 的卡片各 20212021 张,共 2021020210 张,请问小蓝可以从 11 拼到多少?

思路:暴力尝试,记录每一个数字用的次数,任何一个数字用过2021次则结束。

代码:

#include <iostream>
using namespace std;
int main()
{
  // 请在此输入您的代码
  int cnt[10]={0};
  for(int i=1;;i++)
  {
    int num=i;
    while(num)
    {
      cnt[num%10]++;
      if(cnt[num%10]==2021)
      {
        cout<<i<<endl;
        return 0;
      } 
      num/=10;
    }
  }
  return 0;
}

 

 

2.路径

题目:小蓝学习了最短路径之后特别高兴,他定义了一个特别的图,希望找到图 中的最短路径。

小蓝的图由 2021 个结点组成,依次编号 1 至 2021。

对于两个不同的结点 a, b,如果 a 和 b 的差的绝对值大于 21,则两个结点 之间没有边相连;如果 a 和 b 的差的绝对值小于等于 21,则两个点之间有一条 长度为 a 和 b 的最小公倍数的无向边相连。

例如:结点 1 和结点 23 之间没有边相连;结点 3 和结点 24 之间有一条无 向边,长度为 24;结点 15 和结点 25 之间有一条无向边,长度为 75。

请计算,结点 1 和结点 2021 之间的最短路径长度是多少。

思路:好难,为甚么那么大的数,似乎题目读错了,我的想法是每次+20,最后只有103040.可恶

错误代码:

#include <iostream>
using namespace std;
int gcd(int x,int y)
{
    return !y?x:gcd(y,x%y);
}
int main()
{
  // 请在此输入您的代码
  int i,ans=19;
  for(i=20;i<=2021;i+=20)
  {
    ans+=i;
  }
  i-=21;
  ans+=gcd(i,2021);
  cout<<ans<<endl;
  return 0;
}

 

 

3.字符统计

题目:给定一个只包含大写字母的字符串 �S, 请你输出其中出现次数最多的字符。

如果有多个字母均出现了最多次, 按字母表顺序依次输出所有这些字母。

思路:还是考计数器,统计

代码:

#include <iostream>
using namespace std;
int main()
{
  // 请在此输入您的代码
  string s;
  cin>>s;
  int cnt[26]={0};
  int mx=0;
  for(int i=0;i<s.size();i++)
  {
    cnt[s[i]-'A']++;
    if(cnt[s[i]-'A']>mx) mx=cnt[s[i]-'A'];
  }
  for(int i=0;i<26;i++)
  {
    if(cnt[i]==mx)
    {
      char zm='A'+i;
      cout<<zm;
    }
  }
  return 0;
}

 

...全文
10 回复 打赏 收藏 转发到动态 举报
写回复
回复
切换为时间正序
请发表友善的回复…
发表回复

49,439

社区成员

发帖
与我相关
我的任务
社区描述
和众多高校算法内卷分子,一起学习和交流算法那。浓郁的算法交流氛围,拒绝躺平,有效内卷。加入我们,私信我拉你入核心内卷群。
算法数据结构leetcode 个人社区
社区管理员
  • 执 梗
  • Dream-Y.ocean
  • ღCauchyོꦿ࿐
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

 刷题!