这是一个看似简单,其实很难受。

本来我想发挥它的标题轨道基础。没想到反被消遣-_-|||。

看它在个人基础上,良好的数学就干脆点,但由于过于频繁,需求将被纳入全,因此,应该难度4星以上。

方法就是直接打表。然后直接模拟。利用打表去掉一大段数据,剩下数据量十分小了。故此能够直接模拟。

打表是为了计算前面的周期数,把周期数直接去掉。

主要难点是后面10位数以上的数有2位, 3位,4位等情况要考虑。- 以下使用getNewNums一个函数攻克了,想通了,就几行代码,还不用难理解的数学计算,呵呵。

然后是模拟数数位。那么就考主要的编程功力了。

简洁到能够不使用不论什么数学库就0ms过的程序:

#include <stdio.h>

const int MAX_SIZE = 65535;
long long arr[MAX_SIZE]; inline int getNewNums(int i)
{
int n = i;
for (int ten = 10; ten <= i; ten = (ten << 1) + (ten << 3))
{
n += i - ten + 1;
}
return n;
} void fillArr()
{
arr[0] = 0; arr[1] = 1; arr[2] = 3;
for (int i = 3; i < MAX_SIZE; i++)
{
arr[i] = arr[i-1] + getNewNums(i);
}
} int getNum(int n)
{
int i = 1;
for ( ; arr[i] < n && i < MAX_SIZE; i++);
n -= (int)arr[i-1];
int num = 1;
while (n) //直接模拟,由于前面已经截去一大段数据了,所以这里能够模拟
{
char ch[33];
int j = 0, tmp = num;
while (num)
{
ch[j++] = num % 10 + '0';
num /= 10;
}
for (j--; j >= 0; j--)
{
if (n == 1) return ch[j] - '0';
n--;
}
num = tmp+1;
}
return num; //false return.随便返回个数,上面已经会返回值了。 } int main()
{
fillArr();
int T, n;
scanf("%d", &T);
while (T--)
{
scanf("%d", &n);
printf("%d\n", getNum(n));
}
return 0;
}

POJ 1019 Number Sequence 解读的更多相关文章

  1. Poj 1019 Number Sequence( 数据分析和操作)

    一.题目大意 有这样一个序列包含S1,S2,S3...SK,每一个Si包括整数1到 i.求在这个序列中给定的整数n为下标的数. 例如,前80位为1121231234123451234561234567 ...

  2. poj 1019 Number Sequence 【组合数学+数字x的位宽函数】

    题目地址:http://poj.org/problem?id=1019 Number Sequence Time Limit: 1000MS   Memory Limit: 10000K Total ...

  3. POJ 1019 Number Sequence

    找规律,先找属于第几个循环,再找属于第几个数的第几位...... Number Sequence Time Limit: 1000MS Memory Limit: 10000K Total Submi ...

  4. POJ - 1019 Number Sequence (思维)

    https://vjudge.net/problem/POJ-1019 题意 给一串1 12 123 1234 12345 123456 1234567 12345678 123456789 1234 ...

  5. PKU 1019 Number Sequence(模拟,思维)

    题目 以下思路参考自discuss:http://poj.org/showmessage?message_id=176353 /*我的思路: 1.将长串数分成一个个部分,每个部分是从1到x的无重复的数 ...

  6. POJ 1019:Number Sequence 二分查找

    Number Sequence Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 36013   Accepted: 10409 ...

  7. HDU 1005 Number Sequence

    Number Sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  8. hdu 1005:Number Sequence(水题)

    Number Sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  9. hdu1005 Number Sequence(寻找循环节)

    主题链接: pid=1005">huangjing 题意: 就是给了一个公式,然后求出第n项是多少... 思路: 题目中n的范围实在是太大,所以肯定直接递推肯定会超时,所以想到的是暴力 ...

随机推荐

  1. [Android]mac下开发环境搭建

    好像没神马好些的? 1.下载adt-bundle-mac-x86_64bit(http://developer.android.com/sdk/installing/bundle.html) 2.解压 ...

  2. 关于索引删除的策略IndexDeletionPolicy

    关于索引删除的策略IndexDeletionPolicy . public IndexWriter(Directory d, Analyzer a, boolean create)          ...

  3. VMware中linux与window目录共享

    在虚拟机下来实如今windows下共享一个目录: (前提已安装完毕vmtools:http://blog.csdn.net/pipisorry/article/details/21318931) 打开 ...

  4. web开发性能优化---用户体验篇

    怎样从技术角度怎样增强用户体验.都是非常多平台都在做的事情,依据个人实际经验碰到几种体验做下总结. 1.降低页面刷新白屏 适当使用ajax技术.改善刷新白屏现象. 2.信息提醒,邮件.站内信.短信在购 ...

  5. Cocos2d-x-lua游戏两个场景互相切换MainScene01切换到MainScene02

    /* 场景一lua代码 */ require "MainScene02" local dic_size = CCDirector:sharedDirector():getWinSi ...

  6. Oracle Client: TNS: Connect timeout ocurred.

    1. 检查Oracle Server 的防火墙是否关闭. 2. Client, Server 重启.

  7. 《Qt编程的艺术》——9.1 QtSql模块的结构

    QtSql是一个独立的库,如果需要的话,它可以加载附加的插件.不同于QtCore和QtGui,它的内容默认情况下并没有整合进生成的project中.要使用这个库,我们要编辑 .pro文件,添加下列条目 ...

  8. WPF自定义圆形按钮样式资源文件

    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" x ...

  9. Python使用MySQLdb操作MySQL

    import MySQLdb,sys try: conn=MySQLdb.connect(host=,user=',db='db1') except Exception,e: print e sys. ...

  10. Python数据结构-字典

    tel={,} tel[ print(tel) print(tel['tom']) del tel['tom'] print(tel) print(tel.keys()) 运行结果: {, , } { ...