当前位置: 首页 > news >正文

CF1538F Interesting Function - crazy-

CF1538F Interesting Function

题目传送门

题意

给定两个正整数 \(l, r\)\(l < r\)),将 \(l\) 不断加 \(1\) 直到 \(l = r\),求出这一过程中 \(l\) 发生变化的位数总数

位数变化指:

  • \(l=909\),将 \(l+1\) 后有 \(2\) 位数字发生变化。
  • \(l=9\),将 \(l+1\) 后也有 \(2\) 位数字发生变化。
  • \(l=489999\),将 \(l+1\) 后有 \(5\) 位数字发生变化。

而总数指:

  • \(l=10\)\(r=20\),个位变化了 \(10\) 次,十位变化了 \(1\) 次,所以总数为 \(11\)

思路

很明显,当在十位进位时,会比个位多变化一个数位,百位则比十位多变化一个,依此类推。

所以最后我们只需要求出来这个数在相加的过程中每一个数位分别做了多少次仅为操作就行

如果有一个数\(k\),从\(1\)开始进行题目所述操作,那么他在位权是\(10^i\)时(即第\(i-1\)位),就会有\(\frac{k}{10^i}\)

可以用这个方法求出\(l\)\(r\),再作差即可

最后,将他们进位总数相加即可。

代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
int f[15],l,r,ans;
int p(int x)
{int re=1;while(x) x--,re*=10;return re;
}
void run()
{cin>>l>>r;ans=0;memset(f,0,sizeof(f));for(int i=0;i<=9;i++) f[i]=r/p(i);for(int i=0;i<=9;i++) f[i]-=l/p(i);for(int i=0;i<=9;i++) ans+=f[i];cout<<ans<<endl;
}
signed main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int t;cin>>t;while(t--) run();system("echo. & pause");return 0;
}
http://www.rkmt.cn/news/99156.html

相关文章:

  • 2025年男孩取名机构推荐:权威取名机构榜TOP5深度解析 - 十大品牌推荐
  • 3、学习 UNIX 的额外资源
  • 快速排序的理解与实践(c语言实现)
  • 含分布式电源配电网潮流计算及相关实践
  • 6、互联网通信全解析:从邮件到多媒体的多元世界
  • CF1545A AquaMoon and Strange Sort - crazy-
  • 动态规划01背包问题
  • 停止造Agent,开始造Skills吧!Claude Skills创造者:Agent聪明但不够专业,非技术人员也能造Skills
  • 游戏中的开发模式有哪些?一篇带你了解常用的设计模式!<二>
  • 2025年男孩起名机构推荐:权威起名榜单TOP5深度解析 - 十大品牌推荐
  • 深入解析对抗攻击:快速梯度符号方法
  • WinForm DataGridView:单元格类型与高频绘制案例
  • 告别逐张修图!AI批量换模特图背景,新手也能统一风格
  • Claude vs ChatGPT vs Gemini:全方位对比与选用指南
  • 31、进程间通信:信号、管道与套接字详解
  • 在 IntelliJ IDEA 中高效使用 Git 的实用指南
  • 第二十九周 学习周报
  • 2025年起名专家推荐:权威榜单TOP5深度解析与选择指南 - 十大品牌推荐
  • 物联网通信之CAN通讯
  • 2025年女孩起名机构推荐:权威榜单TOP5机构深度解析 - 十大品牌推荐
  • 保姆级教程:iPhone 某人短信消失?9 种解决方法,小白也会用
  • BLOG-2 -
  • C语言归并排序
  • 2025年女孩起名机构推荐:权威起名榜单解析与五大优选机构详评 - 十大品牌推荐
  • 考核算法题纠错
  • 手把手教你学Simulink——电机数字孪生/通信/可持续场景示例:基于Simulink的电机可持续设计仿真
  • 记录一下n8n docker安装方法
  • AI编程:Trae CN用户规则和项目规则定义分享
  • 二叉搜索树详解:从原理到实战
  • python用openpyxl操作excel-读取sheet中数据