每日练题——唐龙守则、最大公约、连锁进位

简介: 每日练题——唐龙守则、最大公约、连锁进位

唐龙守则

题目描述

运行代码

#include<iostream>
using namespace std;
int main(){
    int n;
    cin>>n;
    cout<<n/3;
    return 0;
}

代码思路

直接输出题意,每三个就要撤回一条

最大公约

题目描述

运行代码

#include<iostream>
#include<map>
#include<bits/stdc++.h>
#include<algorithm>
using namespace std;
map<int ,int >mp;
int main()
{int n;
  int a=1;
  cin>>n;
  for(int i=0;i<n;i++)
  {
    int t;
    cin>>t;
    mp[t]++;
    if(mp[t]>a) 
            a=mp[t];
  }
  cout<<a;
    return 0;
}

代码思路

  1. 引入头文件:#include<iostream> 用于标准输入输出操作,如 cincout#include<map> 引入了STL中的map容器,用于存储键值对,这里用于记录每个整数及其出现的次数。
  2. 变量定义:int n; 用于存储输入的整数序列的长度。int a=1; 初始化最大计数值为1,用于记录出现次数最多的整数的频次。
  3. 主函数 main():
  • 读取整数序列的长度 n
  • 使用一个 for 循环遍历输入的整数序列。在循环内部,读取每个整数 t。更新 map 容器 mp,将 t 作为键,其出现次数作为值。mp[t]++ 表示如果 t 已经在 mp 中,则其计数加1;如果不在,则自动插入并初始化为1。使用条件语句 if(mp[t]>a) 检查当前整数 t 的出现次数是否大于已知的最大计数 a,如果是,则更新 a 为当前的计数。
  • 循环结束后,输出变量 a,即出现次数最多的整数的出现次数。

总结:这个程序实现了一个简单的统计问题,即找出一组整数中出现次数最多的数的出现次数。它使用了STL中的map容器来进行高效地计数,并通过一次遍历确定了最大计数值。

连锁进位

题目描述

运行代码

#include <bits/stdc++.h>
#include<iostream>
#include<algorithm>
using namespace std;
void solve(){
    string s;
    cin >> s;
    reverse(s.begin(),s.end());
    int k=0;
    for(k;k<s.size()-1;k++)
    {
        if(s[k]!='0') break;
    }
    if(k==s.size()-1)
    {
        cout << 0 << endl;
        return ;
    }
    int ans=10-(s[k]-'0');
    k++;
    for(k;k<s.size()-1;k++)
    {
        ans+=9-(s[k]-'0');
    }
    cout << ans << endl;;
}
int main(){
  ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    int T;
    T=1;
    cin >> T;
    while(T--)
    solve();
    return 0;
}

代码思路

  1. 输入与预处理:读取一个整数T,表示有T组测试数据,定义一个函数solve()来处理每组测试数据。在solve()中,读取一个字符串s,这个字符串代表了要进行变换的非负整数。
  2. 反转字符串:因为我们要从低位到高位考虑更改数字,所以先将字符串s反转,这样就可以从字符串的开头开始处理,实际上是在处理原数的低位。
  3. 寻找第一个非零位:通过一个循环,从字符串的开始处寻找第一个不为'0'的字符。这是因为在处理过程中,我们关心的是如何让数变大,如果全是0,说明已经是最大的数了(对于有前导零的情况),直接输出0。如果找到了非零位,进入下一步处理;如果没有找到,说明原数全为0,直接输出0。
  4. 计算最少更改次数:从第一个非零位开始,计算每个位置上需要更改的最小次数,使其成为比当前数字大1的数字。例如,如果字符是'1',则需要更改1次变成'2';如果是'9',则需要更改1次变成'0'(因为是循环的,9后是0)。对于第一个非零位之后的其它所有位(直到倒数第二位,因为最后一位的处理方式不同),直接计算需要更改为9的次数,即9减去当前数字。
    计算完成后,累加这些更改次数得到最终答案,并输出。
  5. 主循环:在main()函数中,读取测试用例的数量T,然后循环调用solve()函数处理每组数据。

注意ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);,优化IO速度的代码行,关闭C++标准库与C标准库之间的同步,以及解除cin和cout的绑定,从而加速IO操作。

目录
相关文章
|
开发者
钉钉系统如何接入
钉钉系统如何接入
354 0
|
安全 开发工具 git
CTF工具隐写分离神器Binwalk安装和详细使用方法
CTF工具隐写分离神器Binwalk安装和详细使用方法
4583 0
|
存储 API 开发工具
使用阿里云对象存储OSS+PicGo搭建图床
使用阿里云对象存储OSS+PicGo搭建图床
7113 0
使用阿里云对象存储OSS+PicGo搭建图床
|
Kubernetes API Docker
构建高效后端服务:微服务架构的深度实践与优化####
本文深入探讨了微服务架构在现代后端开发中的应用,通过剖析其核心概念、设计原则及实施策略,结合具体案例分析,展示了如何有效提升系统的可扩展性、可靠性和维护性。文章还详细阐述了微服务拆分的方法论、服务间通信的最佳实践、以及容器化与编排工具(如Docker和Kubernetes)的应用技巧,为读者提供了一份全面的微服务架构落地指南。 ####
|
关系型数据库 MySQL 数据库
实时计算 Flink版操作报错合集之在处理PostgreSQL数据库遇到报错。该如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
人工智能 安全 搜索推荐
单片机毕业设计|基于stm32智能快递箱设计
随在当今的社会,网上购物以及线下获取快递己经成为日常生活中很重要的一个组成部分,电子商务的发展也带来了快递业的繁荣。这对快递业而言,是一个巨大的发展机遇,同时也是一个不可忽视的挑战。当前,快件运输的安全性越来越受到大家的重视,对快件的服务要求也越来越高。但就目前的快递行业来说,也面临着这样那样的问题,比较经常遇到送快递的到了,业务不在家,取快递时间对不上等。在此基础上,提出了一种以STM32为核心的智能化快递柜。本快递柜的主要功能有,指纹解锁功能,按键功能,警报功能,继电器柜门开锁功能,验证码功能,主要设计加入了指纹解锁功能。本系统以STM32F103为主控芯片,配置了指纹传感、4*4矩阵键盘
585 0
|
Kubernetes 监控 负载均衡
Istio:微服务开发的终极利器,你还在为繁琐的通信和部署流程烦恼吗?
本文介绍了服务网格(Service Mesh)的概念及其在微服务架构中的重要性。微服务强调围绕业务构建团队和去中心化的数据管理,带来更高的灵活性和扩展性。然而,随着服务数量增加,网络通信成为挑战,包括服务发现、路由和安全等问题。 Service Mesh如Istio应运而生,通过边车代理解决服务间通信,提供服务发现、负载均衡、智能路由、安全和监控等功能。它与Kubernetes结合,增强了容器环境的服务管理能力。Istio的bookinfo示例展示了其在多语言微服务中的应用,简化了代码中的服务调用逻辑,使开发更专注于业务本身。
1113 3
Istio:微服务开发的终极利器,你还在为繁琐的通信和部署流程烦恼吗?
|
缓存 监控 算法
Java面试题:讨论JVM性能调优的常见方法和技巧。
Java面试题:讨论JVM性能调优的常见方法和技巧。
334 1
|
机器学习/深度学习 传感器 人工智能
Agent
【6月更文挑战第25天】
606 4
|
Java 编译器
Java面向对象编程:构造方法详解
Java面向对象编程:构造方法详解
328 2