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

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

唐龙守则

题目描述

运行代码

#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操作。

目录
相关文章
|
16天前
|
存储 监控 安全
数字堡垒之下的隐形战线
在数字化浪潮中,网络安全与信息安全成为守护数据资产的关键防线。本文将深入探讨网络漏洞的产生与防御机制,剖析加密技术如何为信息穿上“铁布衫”,并强调安全意识的培养对于防范潜在网络威胁的重要性。通过分析最新的网络攻击案例和防御策略,揭示在日益复杂的网络环境中,维护网络安全的多维战略及其对个人、企业乃至国家安全的深远影响。
|
数据采集 人工智能 数据可视化
复盘丨中建三局:在数字世界里盖一座摩天大厦
建筑业几乎可以和农业相比,争夺数字化转型倒数的“桂冠”。而当古老的建筑行业遇上新兴的数字技术,新的故事已然在谱写。 建筑行业的数字化不是单点问题,而是全局问题,所以必然需要从顶层至底层的方法论,同时也要找到小场景的切入口,切实解决生产中的疑难杂症。中建三局一公司果断地将所有的数据和应用全部放在阿里云上,将原来的软件进行重构,显示出绝对的魄力。
727 0
复盘丨中建三局:在数字世界里盖一座摩天大厦
|
供应链 搜索推荐
SaaS走出三重困
本文讲的是SaaS走出三重困,软件与生俱来就是一种独特的服务。我们见到的许多商业软件,其实是省略了针对企业的细密咨询活动的服务。
1309 0