news 2026/6/23 21:40:28

刷题日记day6(数学)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
刷题日记day6(数学)

题目描述

  • 牛客小白月赛152E题 9运算
  • 题解来自大神Kendieer
  • 大神的牛客小白月赛125讲解

思路分析


C++代码展示

#include<bits/stdc++.h>#defineint__int128#definell__int128usingnamespacestd;inta1[100],a9[100];inlinellread(){ll x=0,f=0;charch=0;while(!isdigit(ch)){f|=(ch=='-');ch=getchar();}while(isdigit(ch)){x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}returnf?(-x):x;}inlinevoidwrite(ll x){charnum[65];ll cnt=0;if(!x){putchar('0');return;}if(x<0){putchar('-');x=(-x);}while(x>0){num[cnt++]=x%10+'0';x/=10;}while(cnt>0){putchar(num[--cnt]);}}voidinit(){for(inti=1;i<=32;i++)a1[i]=a1[i-1]*10+1;for(inti=1;i<=32;i++)a9[i]=a1[i-1]*9;}voidsolve(){intans=1e35;intx=read();if(x%9==0){for(inti=1;i<=32;i++){if(a9[i]>=x){ans=min(ans,(a9[i]-x)/9);break;}}}for(inti=1;i<=32;i++){if(a9[i]-9*x>=0){intmiu=(a9[i]-9*x)/81;intlemuda=(a9[i]-81*miu-9*x)/9;inttemp=miu+lemuda+1;ans=min(ans,temp);}}write(ans);putchar('\n');}signedmain(){intT=read();init();while(T--)solve();return0;}

AI代码注释

#include<bits/stdc++.h>#defineint__int128// 重定义int为__int128,处理超大数避免溢出#definell__int128// 别名,简化__int128的书写usingnamespacestd;// 全局数组:a1[i]存储i个1组成的数(如a1[3]=111);a9[i]存储i个9组成的"好数字"(如a9[3]=999)inta1[100],a9[100];// 内联函数:读取__int128类型数字(cin/cout不支持__int128,手动实现)inlinellread(){ll x=0,f=0;// x存储数值,f标记是否为负数(本题x为正,f实际无作用)charch=0;// 跳过非数字字符while(!isdigit(ch)){f|=(ch=='-');// 若有负号,标记f=1ch=getchar();}// 逐位读取数字,计算数值(位运算优化:x*10 = x<<3 + x<<1)while(isdigit(ch)){x=(x<<3)+(x<<1)+(ch^48);// ch^48等价于ch-'0',转字符为数字ch=getchar();}returnf?(-x):x;// 负数返回-x,正数返回x}// 内联函数:输出__int128类型数字(cin/cout不支持__int128,手动实现)inlinevoidwrite(ll x){charnum[65];// 存储数字的每一位字符(逆序)ll cnt=0;if(!x){// 特殊处理x=0的情况putchar('0');return;}if(x<0){// 处理负数(本题x为正,此分支无实际作用)putchar('-');x=(-x);}// 逐位拆分数字,存入num数组(逆序存储)while(x>0){num[cnt++]=x%10+'0';// x%10取最后一位,+ '0'转为字符x/=10;}// 逆序输出,恢复数字的正确顺序while(cnt>0){putchar(num[--cnt]);}}// 初始化函数:预处理生成a1和a9数组(32位以内的1序列和9序列)voidinit(){// 递推生成i个1组成的数:a1[1]=1, a1[2]=11, a1[3]=111...for(inti=1;i<=32;i++)a1[i]=a1[i-1]*10+1;// 递推生成i个9组成的"好数字":a9[1]=9, a9[2]=99, a9[3]=999...for(inti=1;i<=32;i++)a9[i]=a1[i-1]*9;}// 核心解题函数:计算将x转为"好数字"的最少步数voidsolve(){intans=1e35;// 初始化最小步数为极大值(1e35远大于可能的最大步数)intx=read();// 读取当前测试用例的初始数字x// 场景1:不使用乘9操作,仅通过加9变为好数字if(x%9==0){// 前提:x必须是9的倍数(好数字都是9的倍数)// 枚举所有位数的好数字,找到第一个比x大的for(inti=1;i<=32;i++){if(a9[i]>x){// 计算加9步数:(好数字 - x)/9,更新最小步数ans=min(ans,(a9[i]-x)/9);break;// 第一个更大的好数字步数最少,无需继续枚举}}}// 场景2:使用1次乘9操作,再通过加9变为好数字for(inti=1;i<=32;i++){// 好数字需≥9*x(乘9后的数字),否则无法通过加9得到if(a9[i]-9*x>=0){// 拆分加9操作:miu是加81(9*9)的次数,lemuda是剩余加9的次数intmiu=(a9[i]-9*x)/81;intlemuda=(a9[i]-81*miu-9*x)/9;inttemp=miu+lemuda+1;// 总步数=加81次数+加9次数+1次乘9ans=min(ans,temp);// 更新最小步数}}write(ans);// 输出最小步数putchar('\n');// 换行分隔测试用例}// 主函数:处理多组测试用例signedmain(){intT=read();// 读取测试数据组数Tinit();// 预处理生成1序列和9序列数组while(T--)solve();// 逐组处理测试用例return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 0:19:18

Symfony 8路由缓存机制揭秘:如何让应用加载快如闪电

第一章&#xff1a;Symfony 8路由缓存机制概述Symfony 8 在性能优化方面持续演进&#xff0c;其中路由缓存机制是提升应用启动速度与请求处理效率的关键组件。每当应用程序启动时&#xff0c;Symfony 需要解析所有定义的路由规则&#xff0c;并将其编译为可快速匹配的数据结构。…

作者头像 李华
网站建设 2026/6/23 16:22:28

基于STM32智能营养称系统的设计与实现_352

文章目录 一、前言 1.1 项目介绍 【1】项目开发背景 【2】设计实现的功能 【3】项目硬件模块组成 【4】设计意义 【5】国内外研究现状 **国内研究现状** **国外研究现状** **技术痛点与用户项目的创新性** **总结** 【6】摘要 1.2 设计思路 1.3 系统功能总结 1.4 开发工具的选择…

作者头像 李华
网站建设 2026/6/23 9:13:14

PHP 8.6升级必看:5个关键兼容性检测步骤,避免生产环境崩溃

第一章&#xff1a;PHP 8.6升级前的兼容性评估在计划将生产环境从当前 PHP 版本升级至 PHP 8.6 之前&#xff0c;进行全面的兼容性评估是确保系统稳定性的关键步骤。PHP 8.6 虽未引入破坏性变更&#xff0c;但仍对部分函数行为和扩展依赖进行了调整&#xff0c;可能影响现有应用…

作者头像 李华
网站建设 2026/6/23 15:17:11

医疗行业PHP数据备份最佳实践(20年专家亲授方案)

第一章&#xff1a;医疗行业PHP数据备份的核心挑战在医疗信息系统中&#xff0c;PHP作为后端开发的常用语言&#xff0c;承载着大量患者信息、诊疗记录和操作日志。由于医疗数据的高度敏感性和法规合规要求&#xff08;如HIPAA、GDPR&#xff09;&#xff0c;其备份机制面临多重…

作者头像 李华
网站建设 2026/6/22 23:55:14

4、Gateway

Spring Cloud Gateway主要功能&#xff1a; 反向代理认证鉴权流量控制熔断日志监控官方解释&#xff1a;客户端SpringCloud Gateway发出请求&#xff0c;然后在Gateway Handler Mapping中找到与之请求相匹配的路由&#xff0c;将其发送到Gateway Web Handler&#xff0c;Handle…

作者头像 李华
网站建设 2026/6/23 5:16:57

泛型实例化陷阱频发?资深架构师总结的6大避坑法则

第一章&#xff1a;泛型的实例化泛型的实例化是编程语言中实现类型安全与代码复用的关键机制。通过泛型&#xff0c;开发者可以在不指定具体类型的前提下编写函数、类或接口&#xff0c;并在使用时传入实际类型参数&#xff0c;从而生成特定类型的实例。这种延迟类型绑定的设计…

作者头像 李华