Final Countdown 题解
简要题意
把一个数不断减一直到变成零,每个数位变化一次需要一秒。
比如 \(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 题解的更多相关文章
- World final 2017 题解
链接:https://pan.baidu.com/s/1kVQc9d9 Problem A: #include <cstdio> #include <algorithm> #i ...
- 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],那么需要要 ...
- zepto插件 countdown 倒计时插件 从jquery 改成 zepto
插件特色:支持zepto库 支持时间戳格式 支持年月日时分秒格式 countdown 由jquery依赖库改成zepto zepto的event机制与jquery不同,所以更换之后代码不能正常运行 ...
- 【codeforces】【比赛题解】#931 CF Round #468 (Div. 2)
因为太迟了,所以没去打. 后面打了Virtual Contest,没想到拿了个rank 3,如果E题更快还能再高,也是没什么想法. [A]Friends Meeting 题意: 在数轴上有两个整点\( ...
- HOJ题目分类
各种杂题,水题,模拟,包括简单数论. 1001 A+B 1002 A+B+C 1009 Fat Cat 1010 The Angle 1011 Unix ls 1012 Decoding Task 1 ...
- Apple Catching(dp)
Apple Catching Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9831 Accepted: 4779 De ...
- ansible的lookup
lookup路径: /usr/lib/python2.7/site-packages/ansible/plugins/lookup 所有的lookup插件列表cartesian.py dnstxt.p ...
- java多线程(五)线程通讯
1.1. 为什么要线程通信 多个线程并发执行时,在默认情况下CPU是随机切换线程的,有时我们希望CPU按我们的规律执行线程,此时就需要线程之间协调通信. 1.2. 线程通讯方式 线程间通信常用方式如下 ...
- 【breathandlife】气势磅礴、比较好听的旋律有哪些?
[breathandlife]气势磅礴.比较好听的旋律有哪些? 分享:yunbest作者:来源:2015-10-26 专题:breathandlife [breathandlife]气势磅礴.比较好听 ...
- ES系列(七):多节点任务的分发与收集实现
我们知道,当我们对es发起search请求或其他操作时,往往都是随机选择一个coordinator发起请求.而这请求,可能是该节点能处理,也可能是该节点不能处理的,也可能是需要多节点共同处理的,可以说 ...
随机推荐
- leetcode - 相同的树
给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同. 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的. 示例 1: 输入:p = [1,2,3], q = [1 ...
- 【开发工具】Linux 服务器 Shell 脚本简单入门
记录一下学习Shell编程的关键知识点,使用最通俗简洁的语句,让阅读者能快速上手Shell脚本的编写 1.什么是Shell? Shell是一种常用于服务器运维的脚本语言.众所周知,脚本语言不需要编译器 ...
- 【Azure Redis Cache】对StackExchange.Redis IOCP错误消息的解读
问题描述 在使用StackExchange.Redis连接到Azure Redis服务时,时常出现StackExchange.Redis.RedisTimeoutException异常. 全部错误消息 ...
- MySQL日志15连问,redo log与biglog
1. redo log是什么? 为什么需要redo log? redo log 是什么呢? redo log 是重做日志. 它记录了数据页上的改动. 它指事务中修改了的数据,将会备份存储. 发生数据库 ...
- [青少年CTF训练平台]web部分题解(已完结!)
文章管理系统 首先打开环境(>ω<。人)ZZz♪♪ 既然要做题,就要做全面了,图上说了,既然有假flag我就先找出来: 假flag: 打开vmware,使用sqlmap进行处理: sqlm ...
- system-design-primer 系统设计面试题
system-design-primer 关键词:分布式.高并发.系统设计.面试 看腻了互联网上零碎.纷繁的面试题目? 来看看这个仓库吧,他系统介绍了对于大型系统的设计问题,并为系统设计面试做准备. ...
- open cv java 可以 对图片进行分析,得到数据。考试答题卡 2B铅笔涂黑嘎达 识别
open cv java 可以 对图片进行分析,得到数据.考试答题卡 2B铅笔涂黑嘎达 识别
- deepin平台安装debian的cao蛋时
我在deepin系统安装别的系统的时候,一直在boot界面无法进行下一步.困扰了我好几天,最后从电脑的左侧换成了电脑的右侧(usb)接口. 终于安装成功.你是......牛(deepin)
- 基于泰凌微TLSR8258芯片的智能安全头盔解决方案开发之自制IOT微型OS操作系统
一 前记 泰凌微的芯片在国内应用非常广泛,825x作为一个出货的主力芯片,该芯片有着性价比高,功耗低,功能强大等特色. 非常适合做一些比较小的穿戴式设备,比如,手环,智能安全帽等.笔者对这颗芯片用了长 ...
- Markdown表情参考
emoji-github 文章内容来源 https://github.com/hoangdqvn/emoji-github/blob/master/README.md ️ Emoji-GIT Peop ...