Digit
| Digit | ||
| Accepted : 85 | Submit : 308 | |
| Time Limit : 1000 MS | Memory Limit : 65536 KB | |
题目描述
我们把十进制整数依次写成一个字符串,123456789101112…请问第n位数码是多少?
输入
第一行是一个整数T(T≤10000),表示样例的个数。 每行输入一个整数n(1≤n≤788888899)。
输出
每行输出一个样例的结果。
样例输入
2
1
788888899
样例输出
1
1 理解不了什么意思,先存着= =|| 理解之后回来看看^_^ #include <cstdio>
#include <cstring>
#include <math.h>
#include <iostream>
#include <algorithm> using namespace std; __int64 num[15]={0,9,99,999,9999,99999,999999,9999999,99999999,999999999,9999999999}; // 几位数,临界值
__int64 sum[15]; //几位数之前有多少数 int main ()
{
int i, t;
int n, m, Sum;
sum[0] = 0;
for (i=1; i<11; i++)
sum[i] = sum[i-1] + (num[i]-num[i-1])*i; // 这个数是一个i位数,之前有多少数。2位数之前有9位数,3位数开始之前有189个位
scanf ("%d", &t);
while (t --)
{
scanf ("%d", &n);
i = 1;
while (n > sum[i])
i ++; // n 这个数是在一个i位数中间的一个数 n -= sum[i-1]; //n变成了 这个i位数开始之后的n位数
n = n % i; // n是这个i位数中的第n位
Sum = num[i-1] + n / i; // num【i-1】是这个i位数开始之前的数,n/i是指第几个i位数,n是在Sum中的某一位
m = (num[i] - num[i-1])/9; //几位数,m后就有几个零
int s; //存结果
if (n == 0)
s = Sum % 10; // n等于0表示是这个数的最后一位
else
{
Sum ++; // n大于0表示已经超过i位了,所以要加一,就是第n位在Sum+1这个数里边
while (n --)
{
s = (Sum / m) % 10; // 求第n位是多少
m /= 10;
}
}
printf ("%d\n", s);
}
return 0;
} Do you understand?^_^||
Digit的更多相关文章
- [LeetCode] Nth Digit 第N位
		Find the nth digit of the infinite integer sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... Note: n i ... 
- [LeetCode] Number of Digit One 数字1的个数
		Given an integer n, count the total number of digit 1 appearing in all non-negative integers less th ... 
- [Leetcode] Number of Digit Ones
		Given an integer n, count the total number of digit 1 appearing in all non-negative integers less th ... 
- 【Codeforces715C&716E】Digit Tree       数学 + 点分治
		C. Digit Tree time limit per test:3 seconds memory limit per test:256 megabytes input:standard input ... 
- kaggle实战记录  =>Digit Recognizer
		date:2016-09-13 今天开始注册了kaggle,从digit recognizer开始学习, 由于是第一个案例对于整个流程目前我还不够了解,首先了解大神是怎么运行怎么构思,然后模仿.这样的 ... 
- [UCSD白板题] The Last Digit of a Large Fibonacci Number
		Problem Introduction The Fibonacci numbers are defined as follows: \(F_0=0\), \(F_1=1\),and \(F_i=F_ ... 
- Last non-zero Digit in N!(阶乘最后非0位)
		Last non-zero Digit in N! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Jav ... 
- POJ3187Backward Digit Sums[杨辉三角]
		Backward Digit Sums Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6350 Accepted: 36 ... 
- Number of Digit One
		Given an integer n, count the total number of digit 1 appearing in all non-negative integers less th ... 
- Java for LeetCode 233 Number of Digit One
		Given an integer n, count the total number of digit 1 appearing in all non-negative integers less th ... 
随机推荐
- Fira Code,可以让不等号!=直接显示出来的字体
			今天看B站某直播间有人写代码C#里一堆不等号直接显示,感觉很神奇,以为是插件还是什么新语法,托人问了下原来是Fira Code字体 https://github.com/tonsky/FiraCode ... 
- HTMLTestRunner下载生成报告
			HTMLTestRunner下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html,选择HTMLTestRunner.py下载 2.打开显示这 ... 
- 微信小程序(二)--逻辑层与界面层
			一.逻辑层与界面层分离 小程序开发框架将我们需要完成的编码,划分成了两种类型的编码:逻辑编码(由JavaScript完成,业务数据供给界面事件处理),界面编码(页面结构WXML,页面样式WXSS,展示 ... 
- Struts2+Ajax实现数据交互
			1.导入jar包 struts核心包: json需要的包: 2.配置web.xml <filter> <filter-name>struts2</filter-name& ... 
- 什么是HTTP协议?常用的状态码有哪些?
			一.HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的 ... 
- 动态规划——稀疏表求解RMQ问题
			RMQ (Range Minimum/Maximum Query)问题,即区间最值查询问题,是求解序列中的某一段的最值的问题.如果只需要询问一次,那遍历枚举(复杂度O(n))就是最方便且高效的方法,但 ... 
- python学习第十九天三元运算符与php语言区别
			三元运算符是条件语句的简写,常见的条件语句写三行,三元运算符只需要写一行,python三元运算符是怎么写的呢 1,常见条件判断 if a<b: print(a) else: print(b) 2 ... 
- 【JMeter4.0】二、JMeter4.0安装与配置
			二.安装配置JMeter jmeter是一个纯java工具,因此,JDK必不可少,现在最新版的jmeter是4.0,建议使用1.8及以上的JDK安装配置JDK,如没有,请见:[JMeter4.0]一. ... 
- mysql数据库操作指令汇总
			1.mysql -u root -p 登录数据库 2.表结构相同两表数据对拷 insert into A select * from B(插入全部字段数据) insert into A(字段1.字 ... 
- 在win7下面清除samba用户的登录状态
			相信会有一部分刚开始测试samba服务器的人会有过这样的疑惑? 在win7下面使用一个samba用户的username和passwd登录过后,之后每次进去都是以这样的username和passwd进去 ... 
