Content

给定一个数 \(n\),每次操作可以将 \(n\) 变成 \(n\) 各位数之和。问你几次操作之后可以将 \(n\) 变为一位数。

数据范围:\(1\leqslant n\leqslant 10^{10^5}\)。

Solution

一看这么大个数字我们就不能够用 intlong long 之类的类型读入了,只能够用字符串、字符数组。然后考虑将所有的数位暴力拆开求和,然后再代入求出操作后的数字,直到变成一位数为止。

Code

请注意下面的代码需要特判是否本来就是一位数。

const int N = 1e5 + 7;
int digit[N], tmp[N], tmp2[N], sum, ans; inline int td(char x) {return x - '0';} int main() {
crstr(s, n);
if(n == 1) return printf("0"), 0;
F(i, 0, n - 1) digit[i + 1] = td(s[i]);
while(1) {
memset(tmp, 0, sizeof(tmp));
memset(tmp2, 0, sizeof(tmp2));
sum = 0; //Clear all!!!
F(i, 1, n) sum += digit[i];
while(sum) {
tmp[++tmp[0]] = sum % 10;
sum /= 10;
}
R(i, tmp[0], 1) tmp2[i] = tmp[tmp[0] - i + 1];
memset(digit, 0, sizeof(digit));
F(i, 1, tmp[0]) digit[i] = tmp2[i];
n = tmp[0], ans++;
if(n == 1) break;
}
return write(ans), 0;
}

最新文章

  1. STM32基于HAL库通过DMA读写SDIO
  2. JS新API标准 地理定位(navigator.geolocation)/////////zzzzzzzzzzz
  3. 夺命雷公狗----Git---1---安装步骤
  4. UE4 VR GUI实现 参考(UMG AND VR)
  5. SQL Server 2000 :选择许可模式及更改
  6. swift入门篇-函数
  7. js立即执行函数: (function ( ){...})( ) 与 (function ( ){...}( )) 有区别?
  8. CDNJS:使用JavaScript CDN加速网站载入速度
  9. php 数组排序代码
  10. 机器学习 —— 决策树及其集成算法(Bagging、随机森林、Boosting)
  11. Java多线程Thread.yield(),thread.join(), Thread.sleep(200),Object.wait(),Object.notify(),Object.notifyAll()的区别
  12. ASP.NET学习笔记——ASP.NET应用程序
  13. bootstrap base css 基本css
  14. LeetCode OJ 142. Linked List Cycle II
  15. 【吐血整理】SVN命令行,Subversion的正确使用姿势,让版本控制更简单~
  16. Struts2之Validator
  17. 深度学习中优化【Normalization】
  18. 19 个常用的 JavaScript 简写方法
  19. P1567 气温统计
  20. cmd 开启热点

热门文章

  1. ant的xml解释
  2. 解决 IDEA 2021.2.3 新建maven项目只有两个archetype项目模板的问题
  3. Atcoder Grand Contest 033 D - Complexity(dp)
  4. 自然溢出哈希 hack 方法
  5. 快速傅里叶变换(FFT)随笔
  6. R语言与医学统计图形-【18】ggplot2几何对象汇总
  7. EXCEL-对筛选出(单独手动隐藏行还是在统计范围内)的表格数据进行统计
  8. 进阶版的java面试
  9. Redis篇:单线程I/O模型
  10. 【模板】滑动窗口最值(单调队列)/洛谷P1886