CF102B Sum of Digits 题解
2024-10-01 07:46:51
Content
给定一个数 \(n\),每次操作可以将 \(n\) 变成 \(n\) 各位数之和。问你几次操作之后可以将 \(n\) 变为一位数。
数据范围:\(1\leqslant n\leqslant 10^{10^5}\)。
Solution
一看这么大个数字我们就不能够用 int
,long 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;
}
最新文章
- STM32基于HAL库通过DMA读写SDIO
- JS新API标准 地理定位(navigator.geolocation)/////////zzzzzzzzzzz
- 夺命雷公狗----Git---1---安装步骤
- UE4 VR GUI实现 参考(UMG AND VR)
- SQL Server 2000 :选择许可模式及更改
- swift入门篇-函数
- js立即执行函数: (function ( ){...})( ) 与 (function ( ){...}( )) 有区别?
- CDNJS:使用JavaScript CDN加速网站载入速度
- php 数组排序代码
- 机器学习 —— 决策树及其集成算法(Bagging、随机森林、Boosting)
- Java多线程Thread.yield(),thread.join(), Thread.sleep(200),Object.wait(),Object.notify(),Object.notifyAll()的区别
- ASP.NET学习笔记——ASP.NET应用程序
- bootstrap base css 基本css
- LeetCode OJ 142. Linked List Cycle II
- 【吐血整理】SVN命令行,Subversion的正确使用姿势,让版本控制更简单~
- Struts2之Validator
- 深度学习中优化【Normalization】
- 19 个常用的 JavaScript 简写方法
- P1567 气温统计
- cmd 开启热点