CF1433A Boring Apartments 题解
Content
我们把仅由一个或多个相同的数位组成的数字叫作“无聊的数字”。我们把 \(\leqslant 10000\) 的这种数字按照以下规则排列:
- 首先,将仅由 \(1\) 组成的 \(\leqslant 10000\) 的“无聊的数字”按照升序排列:\(1,11,111,1111,...\)。
- 再将仅由 \(2\) 组成的 \(\leqslant 10000\) 的“无聊的数字”按照升序排列:\(2,22,222,2222,...\)。
- 以此类推。
给出 \(t\) 次询问,每次询问给定一个无聊的数字 \(x\),请求出当数列排到 \(x\) 时,\(x\) 以及前面所有的“无聊的数字”的位数之和。
数据范围:\(1\leqslant t\leqslant 36,1\leqslant x\leqslant 9999\)。
Solution
虽然翻译可能和原来题面有些许出入,但是不会影响做题的。
我们假设现在给出的 \(x\) 仅由数字 \(a\) 构成,那么前面肯定 \(10(a-1)\) 次,这是由于你在前面的仅由 \(1,2,...,a-1\) 构成的“无聊的数字”中,每个数字按了 \(1+2+3+4=10\) 次,所以就是 \(a-1\) 次,然后,我们根据这个数的位数 \(y\),我们可以推出当前的数字一共按了 \(1+2+...+y=\dfrac{y(y+1)}{2}\) 次,所以一共按了 \(10(a-1)+\dfrac{y(y+1)}{2}\) 次。
官方题解是直接字符串读入然后提取构成的数字和数位的,下面给出一种不同于官方题解的具体实现:我们可以直接拿 \(10\) 对这个数取模得到其个位数,根据“无聊的数字”的定义可知它就是由这个个位数组成的。然后我们通过分离数位得到其位数,最后直接按照上面的公式计算即可。虽然效率会有些低,但是对于这道题目是足够的了。
Code
int t, x;
int main() {
//This program is written in Windows 10 by Eason_AC
getint(t);
while(t--) {
getint(x);
int p = x, digit = 0;
while(p) {
digit++;
p /= 10;
}
printf("%d\n", (x % 10 - 1) * 10 + (digit + 1) * digit / 2);
}
return 0;
}
CF1433A Boring Apartments 题解的更多相关文章
- Non Super Boring Substring 题解(hash+思维)
题目链接 题目大意 给你一个长度为d(d<=1e5)的字符串,要你求有多少个子串满足这个子串不包含长度大于等于k的回文子串 题目思路 首先可以hash预处理,然后O(1)用前缀hash值和后缀h ...
- Codeforces Round #677 (Div. 3)【ABCDE】
比赛链接:https://codeforces.com/contest/1433 A. Boring Apartments 题解 模拟即可. 代码 #include <bits/stdc++.h ...
- Codeforces Round #677 (Div. 3) 题解
Codeforces Round #677 (Div. 3) 题解 A. Boring Apartments 题目 题解 简单签到题,直接数,小于这个数的\(+10\). 代码 #include &l ...
- 山东省第四届ACM大学生程序设计竞赛解题报告(部分)
2013年"浪潮杯"山东省第四届ACM大学生程序设计竞赛排名:http://acm.upc.edu.cn/ranklist/ 一.第J题坑爹大水题,模拟一下就行了 J:Contes ...
- hihoCoder 1430 : A Boring Problem(一琐繁题)
hihoCoder #1430 : A Boring Problem(一琐繁题) 时间限制:1000ms 单点时限:1000ms 内存限制:256MB Description - 题目描述 As a ...
- sdut 2610:Boring Counting(第四届山东省省赛原题,划分树 + 二分)
Boring Counting Time Limit: 3000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 In this problem you a ...
- HDU 5793 A Boring Question (逆元+快速幂+费马小定理) ---2016杭电多校联合第六场
A Boring Question Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
- Boring count(字符串处理)
Boring count Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- 多校6 1001 HDU5793 A Boring Question (推公式 等比数列求和)
题解:http://bestcoder.hdu.edu.cn/blog/ 多校6 HDU5793 A Boring Question // #pragma comment(linker, " ...
随机推荐
- 调试:'Object reference note set to an instance of an object.'
今天调试代码遇到一个奇怪的问题,每次调试到 var files = new List<string>()这一行代码,总是报错:System.NullReferenceException: ...
- 关于uni-app导航栏中 中间大图标的设置
在uni-app的开发过程中,想要将位于中间的图标设置更大,通过一般的更改导航栏图标大小方式实现不了.经过查看官方文档可以发现,我们可以通过midbutton来设置中间tabbar的样式. 但前提是, ...
- Codeforces 1276F - Asterisk Substrings(SAM+线段树合并+虚树)
Codeforces 题面传送门 & 洛谷题面传送门 SAM hot tea %%%%%%% 首先我们显然可以将所有能够得到的字符串分成六类:\(\varnothing,\text{*},s, ...
- Linux openssl 升级、降级
Linux openssl 升级.降级 最近遇到一些朋友使用微信退款,报openssl版本为问题,需要对openssl进行降级. 现在环境的openssl版本如下: root@c215a2b695ef ...
- idea中如何找到重写
Ctrl+O 为了避免写错重写类和快速重写.
- linux 线程函数小结
由于主线程已经开始跑了,次线程还在使用串口打印需要一点时间,因此打印的都是重复的. #include "pthread.h" #include "stdio.h" ...
- shell 指令
cat/proc/parttitions df -T pstree ext4 是linux 文件系统
- 1 — 第一个springboot
1.什么是springboot? 老规矩:百度百科一下 2.对springboot快速上手 1).第一种方式:通过官网来创建springboot项目 ---- 了解即可 这里面的创建方式不做过多说明, ...
- 巩固javaweb的第二十四天
巩固内容: 提示用户信息 在验证失败之后通常需要提示用户错误信息,可以通过下面的代码完成: alert("地址长度大于 50 位!"); 当使用 alert 提示错误信息时,参数是 ...
- 疯了吧!这帮人居然用 Go 写“前端”?(二)
作者 | 郑嘉涛(羣青) 来源|尔达 Erda 公众号 前言 上篇我们讲了故事发生的背景,也简单阐述了组件及协议的设想: 一.丰富的通用组件库. 二.组件渲染能力,将业务组件渲染成通用组件 ...