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, " ...
随机推荐
- negix启动不成功
negix启动闪退,猜测可能端口占用,查看log发现 2020/11/30 11:38:40 [emerg] 15632#8688: CreateFile() "F:\项目工具\nginx- ...
- [SVN] Branch and Tag
在 SVN 中,如何建立分支以及如何标记Tag. 右键要处理的文件夹,选择 "TortoiseSVN" - "Branch/tag...",进入下面界面: To ...
- 使用Shiro出现404的处理
在使用Shiro的@RequiresXXX的注解时,可能会导致页面访问出现404错误,解决方法为在ShiroConfig类中添加如下的配置: @Beanpublic DefaultAdvisorAut ...
- 统计学习1:朴素贝叶斯模型(Numpy实现)
模型 生成模型介绍 我们定义样本空间为\(\mathcal{X} \subseteq \mathbb{R}^n\),输出空间为\(\mathcal{Y} = \{c_1, c_2, ..., c_K\ ...
- CUDA计算矩阵相乘
1.最简单的 kernel 函数 __global__ void MatrixMulKernel( float* Md, float* Nd, float* Pd, int Width) { int ...
- 重测序(RADseq)做群体遗传分析套路
实验材料 构建的群体,或自然群体,如各地方品种. RAD文库构建 提取DNA后,构建文库,简要步骤如下: ① 限制性内切酶TaqI酶切: ② 连接P1接头: ③ DNA随机打断片断化: ④ 目的片段回 ...
- Markdown—.md文件是什么?怎么打开?
md全称markdown,markdown也是一种标记语言. md文件其实可以用常用的文本编辑器都可以打开. 用记事本打开,把markdown文件拖到记事本图标上就可以打开 . 用 subli ...
- error while loading shared libraries: libstdc++.so.5: wrong ELF class: ELFCLASS64
今天部署一个探针在运行的时候报了这样一个错:error while loading shared libraries: libstdc++.so.5: wrong ELF class: ELFCLAS ...
- A Child's History of England.22
CHAPTER 8 ENGLAND UNDER WILLIAM THE FIRST, THE NORMAN CONQUEROR Upon the ground where the brave Haro ...
- 【DFS与BFS】洛谷 P1135 奇怪的电梯
题目:奇怪的电梯 - 洛谷 (luogu.com.cn) 因为此题数据范围较小,有dfs及bfs等多种做法. DFS 比较正常的dfs,注意vis数组一定要回溯,不然会漏情况 例如这个数据 11 1 ...