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 题解的更多相关文章

  1. Non Super Boring Substring 题解(hash+思维)

    题目链接 题目大意 给你一个长度为d(d<=1e5)的字符串,要你求有多少个子串满足这个子串不包含长度大于等于k的回文子串 题目思路 首先可以hash预处理,然后O(1)用前缀hash值和后缀h ...

  2. Codeforces Round #677 (Div. 3)【ABCDE】

    比赛链接:https://codeforces.com/contest/1433 A. Boring Apartments 题解 模拟即可. 代码 #include <bits/stdc++.h ...

  3. Codeforces Round #677 (Div. 3) 题解

    Codeforces Round #677 (Div. 3) 题解 A. Boring Apartments 题目 题解 简单签到题,直接数,小于这个数的\(+10\). 代码 #include &l ...

  4. 山东省第四届ACM大学生程序设计竞赛解题报告(部分)

    2013年"浪潮杯"山东省第四届ACM大学生程序设计竞赛排名:http://acm.upc.edu.cn/ranklist/ 一.第J题坑爹大水题,模拟一下就行了 J:Contes ...

  5. hihoCoder 1430 : A Boring Problem(一琐繁题)

    hihoCoder #1430 : A Boring Problem(一琐繁题) 时间限制:1000ms 单点时限:1000ms 内存限制:256MB Description - 题目描述 As a ...

  6. sdut 2610:Boring Counting(第四届山东省省赛原题,划分树 + 二分)

    Boring Counting Time Limit: 3000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述     In this problem you a ...

  7. HDU 5793 A Boring Question (逆元+快速幂+费马小定理) ---2016杭电多校联合第六场

    A Boring Question Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others ...

  8. Boring count(字符串处理)

    Boring count Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...

  9. 多校6 1001 HDU5793 A Boring Question (推公式 等比数列求和)

    题解:http://bestcoder.hdu.edu.cn/blog/ 多校6 HDU5793 A Boring Question // #pragma comment(linker, " ...

随机推荐

  1. 调试:'Object reference note set to an instance of an object.'

    今天调试代码遇到一个奇怪的问题,每次调试到 var files = new List<string>()这一行代码,总是报错:System.NullReferenceException: ...

  2. 关于uni-app导航栏中 中间大图标的设置

    在uni-app的开发过程中,想要将位于中间的图标设置更大,通过一般的更改导航栏图标大小方式实现不了.经过查看官方文档可以发现,我们可以通过midbutton来设置中间tabbar的样式. 但前提是, ...

  3. Codeforces 1276F - Asterisk Substrings(SAM+线段树合并+虚树)

    Codeforces 题面传送门 & 洛谷题面传送门 SAM hot tea %%%%%%% 首先我们显然可以将所有能够得到的字符串分成六类:\(\varnothing,\text{*},s, ...

  4. Linux openssl 升级、降级

    Linux openssl 升级.降级 最近遇到一些朋友使用微信退款,报openssl版本为问题,需要对openssl进行降级. 现在环境的openssl版本如下: root@c215a2b695ef ...

  5. idea中如何找到重写

    Ctrl+O 为了避免写错重写类和快速重写.

  6. linux 线程函数小结

    由于主线程已经开始跑了,次线程还在使用串口打印需要一点时间,因此打印的都是重复的. #include "pthread.h" #include "stdio.h" ...

  7. shell 指令

    cat/proc/parttitions df -T pstree ext4 是linux 文件系统

  8. 1 — 第一个springboot

    1.什么是springboot? 老规矩:百度百科一下 2.对springboot快速上手 1).第一种方式:通过官网来创建springboot项目 ---- 了解即可 这里面的创建方式不做过多说明, ...

  9. 巩固javaweb的第二十四天

    巩固内容: 提示用户信息 在验证失败之后通常需要提示用户错误信息,可以通过下面的代码完成: alert("地址长度大于 50 位!"); 当使用 alert 提示错误信息时,参数是 ...

  10. 疯了吧!这帮人居然用 Go 写“前端”?(二)

    作者 | 郑嘉涛(羣青) 来源|尔达 Erda 公众号 ​ 前言 ​ 上篇我们讲了故事发生的背景,也简单阐述了组件及协议的设想: ​ 一.丰富的通用组件库. 二.组件渲染能力,将业务组件渲染成通用组件 ...