Problem Link

简要题意

把一个数不断减一直到变成零,每个数位变化一次需要一秒。

比如 \(300\) 变成 \(299\) 需要 \(3\) 秒。

求把一个数变成零要多少秒。

思路

对于每一位分开讨论它修改的次数发现。

把一个数 \(x\) 变成零的总次数其实就是

\(\sum \limits _{i=0}^n \lfloor \frac{x}{10^i} \rfloor\) 其中 \(n\) 是这个数字的位数。

比如 \(12345\) 变化次数

就是 \(12345 + 1234 + 123 +12 +1\)。

但是数字太大需要使用高精度。

观察发现第 \(i\) 位是前 \(n-i+1\) 个数的和的个位,所以维护前缀和,然后进行高精度就行。

code

#include <cstdio>
#include <vector>
#include <algorithm> using i64 = long long ; const int N = 4e5 + 5 ; char s[N]; void solve(){ int n;
scanf("%d",&n); scanf("%s",s+1); std::vector<int> sum(n+10,0);
std::vector<int> ans(n+10,0); for(int i = 1; i <= n; i++)
sum[i] = sum[i-1] + s[i]-'0'; std::vector<int> add(n+10,0);
for(int i = 1; i <= n; i++) {
int x = (sum[n-i+1] + add[i])/10; ans[i] = (sum[n-i+1] + add[i])%10; add[i+1] += x; //维护进位
} if(add[n+1])
ans[n+1] = add[n+1],n++; while(ans[n] == 0) n--; //去掉前导零
for(int i = n; i >= 1; i--)
printf("%d",ans[i]); puts("");
} int main(){ int t;
scanf("%d",&t); while(t--) solve();
return 0;
}

Final Countdown 题解的更多相关文章

  1. World final 2017 题解

    链接:https://pan.baidu.com/s/1kVQc9d9 Problem A: #include <cstdio> #include <algorithm> #i ...

  2. Codeforces Round #543 (Div. 1, based on Technocup 2019 Final Round) 题解

    题面戳这里 A. Diana and Liana 首先如果s>ks>ks>k一定无解,特判一下.那么我们考虑找恰好满足满足题目中的要求的区间[l,r][l,r][l,r],那么需要要 ...

  3. zepto插件 countdown 倒计时插件 从jquery 改成 zepto

    插件特色:支持zepto库  支持时间戳格式 支持年月日时分秒格式 countdown 由jquery依赖库改成zepto zepto的event机制与jquery不同,所以更换之后代码不能正常运行 ...

  4. 【codeforces】【比赛题解】#931 CF Round #468 (Div. 2)

    因为太迟了,所以没去打. 后面打了Virtual Contest,没想到拿了个rank 3,如果E题更快还能再高,也是没什么想法. [A]Friends Meeting 题意: 在数轴上有两个整点\( ...

  5. HOJ题目分类

    各种杂题,水题,模拟,包括简单数论. 1001 A+B 1002 A+B+C 1009 Fat Cat 1010 The Angle 1011 Unix ls 1012 Decoding Task 1 ...

  6. Apple Catching(dp)

    Apple Catching Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9831   Accepted: 4779 De ...

  7. ansible的lookup

    lookup路径: /usr/lib/python2.7/site-packages/ansible/plugins/lookup 所有的lookup插件列表cartesian.py dnstxt.p ...

  8. java多线程(五)线程通讯

    1.1. 为什么要线程通信 多个线程并发执行时,在默认情况下CPU是随机切换线程的,有时我们希望CPU按我们的规律执行线程,此时就需要线程之间协调通信. 1.2. 线程通讯方式 线程间通信常用方式如下 ...

  9. 【breathandlife】气势磅礴、比较好听的旋律有哪些?

    [breathandlife]气势磅礴.比较好听的旋律有哪些? 分享:yunbest作者:来源:2015-10-26 专题:breathandlife [breathandlife]气势磅礴.比较好听 ...

  10. ES系列(七):多节点任务的分发与收集实现

    我们知道,当我们对es发起search请求或其他操作时,往往都是随机选择一个coordinator发起请求.而这请求,可能是该节点能处理,也可能是该节点不能处理的,也可能是需要多节点共同处理的,可以说 ...

随机推荐

  1. Jsp+Servlet实现文件上传下载(四)--下载文件

    接着上一篇讲: Jsp+Servlet实现文件上传下载(三)--删除上传文件    点击打开链接 本章来实现一下下载文件功能,同时优化了一下上一章中的代码. 废话少说,上代码 ------------ ...

  2. 神经网络优化篇:详解TensorFlow

    TensorFlow 先提一个启发性的问题,假设有一个损失函数\(J\)需要最小化,在本例中,将使用这个高度简化的损失函数,\(Jw= w^{2}-10w+25\),这就是损失函数,也许已经注意到该函 ...

  3. 腾讯云轻量级主机修改hostname后重启后又恢复原先的hostname

    搭建k8s后,执行inspect后 显示hostname 不符合规范, 修改/etc/hostname 后重启, 发现又自动恢复到默认主机名: 查资料后发现腾讯云的配置里,如果重启会重置hostnam ...

  4. [BUUCTF][WEB][ACTF2020 新生赛]Upload 1

    打开靶机url,右键查看网页源代码 其中有一段代码 <div class="light"><span class="glow"> < ...

  5. 【Azure 应用服务】调用Azure REST API来获取 App Service的访问限制信息(Access Restrictions)以及修改

    问题描述 昨天的博文中(https://www.cnblogs.com/lulight/p/17099179.html)介绍了使用Python SDK 来获取App Service的访问限制信息,那么 ...

  6. 【Azure Redis 缓存】Redis性能指标之Server Load

    Server Load描述 在Redis的官方介绍中,Server Load指标是Redis 服务器忙于处理消息并且非空闲等待消息的周期百分比. 如果此计数器达到 100,则意味着 Redis 服务器 ...

  7. Nebula Graph 源码解读系列 | Vol.06 MATCH 中变长 Pattern 的实现

    目录 问题分析 定长 Pattern 变长 Pattern 与变长 Pattern 的组合 执行计划 拓展一步 拓展多步 保存路径 变长拼接 总结 MATCH 作为 openCypher 语言的核心, ...

  8. 5、mysql优化--索引使用情况、索引的结构

    避免索引失效 1). 全值匹配 ,对索引中所有列都指定具体值. 2). 最左前缀法则 如果索引了多列,要遵守最左前缀法则.指的是查询从索引的最左前列开始,并且不跳过索引中的列. 3). 范围查询右边的 ...

  9. 适用mybatis和jpa的全数据库类型主键生成插件,分布式高并发有序id生成器

    适用mybatis和jpa的全数据库类型主键生成插件,分布式高并发有序id生成器

  10. CodeIgniter3.chm 打包编译 需要 hhc.exe - php框架

    电子书地址 https://github.com/CodeIgniter-Chinese/rapid-php-application-development 我打包编译好了chm,https://fi ...