前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >poj 1019 Number Sequence

poj 1019 Number Sequence

作者头像
用户1624346
发布于 2018-04-17 08:09:11
发布于 2018-04-17 08:09:11
81700
代码可运行
举报
文章被收录于专栏:calmoundcalmound
运行总次数:0
代码可运行

http://poj.org/problem?id=1019

题意:1 12 123 1234 12345 一窜数字 求第n位的数字是什么

分析:拿到题就是不会。。。

         看了题解

         a[i]计算i数字的位数,s[i]计算到达i数字的总位数

         i数字的位数log10(i)+1  

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<stdio.h>
#include<math.h>
const int MAXN=40000;
long long  a[MAXN];
long long  s[MAXN];
void init()
{
    s[1]=a[1]=1;
    for(int i=2;i<MAXN;i++)
    {
        a[i]=a[i-1]+(int)log10((double)i)+1;
        s[i]=s[i-1]+a[i];
    }
}

int compute(int n)
{
    int pos,i=1;
    while(s[i]<n) i++;//找出第i个数字的位数和是大于n的

    pos=n-s[i-1];//计算出n位是第i个数字的第几位
    int len=0;
    for(i=1;len<pos;i++)//找出那个数字i
        len+=(int)log10((double)i)+1;

    return (i-1)/(int)pow(10.0,len-pos)%10;//i-1是上一个循环i多加了一次,len-pos是‘
      //所求位数字的后面那几位要除掉,在%10就是所求位的数字了
}

//例如5 s[3]=112123,pos=5-s[2]=2;循环中所能找到的len=3,i=3; 2/1%10=2;

int main()
{
    int T,n;
    init();
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d",&n);
        printf("%d\n",compute(n));
    }
    return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2013-02-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
POJ1019 Number Sequence 题解
给定一串有规律的数:11212312341234512345612345671234567812345678912345678910123456789101112345678910,问从左往右数第 i 个数字是多少?
yzxoi
2022/09/19
1500
poj 4044 Score Sequence(暴力)
大致题意:给出两个班级的成绩,先按降序排序,而且没有成绩同样的。然后求连续的最长公共子序列。输出时,先输出最长公共子序列,然后按个位数字递增的顺序输出,若各位数字一样就按成绩递增。
全栈程序员站长
2022/07/12
1590
搜索专题
POJ  Best Sequence http://poj.org/problem?id=1699 题意:给你n个字符窜,求其所能拼接的最短长度。 分析:预处理下,dp[i][j]表示j接在i后头的最
用户1624346
2018/04/17
8040
KMP专题
POJ 2406 Power Strings http://poj.org/problem?id=2406 题意:找出s字符窜由多少个重复子窜循环构成 分析:KMP求出next数组,其i-next[i
用户1624346
2018/04/17
6300
POJ 3252 Round Numbers(数位dp+前导零)
       思路就是我们将它的二进制存起来,然后这里需要判断前导零的情况,不是很难理解,以dp[pos][n0][n1]分别来存第pos位,0的个数,1的个数,然后记忆化搜索就好了。
Ch_Zaqdt
2019/01/28
5740
poj 3126 Prime Path (广搜)
http://poj.org/problem?id=3126 题意:从一个素数,挨个数位的变换,在此过程中保证每次变换的数位都是素数,最后变到所给的另一个素数最少步多少 分析:广搜,依次换一位数字,判
用户1624346
2018/04/17
5370
POJ 1423 Big Number
In many applications very large integers numbers are required. Some of these applications are using keys for secure transmission of data, encryption, etc. In this problem you are given a number, you have to determine the number of digits in the factorial of the number. Input
谙忆
2021/01/20
2630
动态规划集合
动态规划,少说也做了,30 40道了但是感觉还是没有入门,接下来一星期将重新做动态规划,hdu入门的,uva入门的,外加poj的,把动态规划都重新学一下 01背包知识点  1.Robberies (hdu2955)  (01背包变形) 第一次做的时候把概率当做背包(放大100000倍化为整数):在此范围内最多能抢多少钱  最脑残的是把总的概率以为是抢N家银行的概率之和… 实际上可以将其转化为安全的概率,则两个概率相乘,就是两次抢劫的安全概率了。     正确的方程是:f[j]=max(dp[j],dp[j-
用户1624346
2018/04/17
1K0
POJ 1018 Communication System
Communication System Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 28182 Accepted: 10049 Description We have received an order from Pizoor Communications Inc. for a special communication system. The system consists of several dev
Angel_Kitty
2018/04/08
7511
poj 1068 Parencodings(模拟)
http://poj.org/problem?id=1068 题意:输入一组数表示左边有几个括号,输出一组数表述该右括号里搭配好了几个括号 #include<stdio.h> const int MA
用户1624346
2018/04/17
4830
poj 2478 Farey Sequence(欧拉函数是基于寻求筛法素数)
2.欧拉定理:若a与n互质。那么有a^φ(n) ≡ 1(mod n),经经常使用于求幂的模。
全栈程序员站长
2022/07/05
3190
POJ 1458 Common Subsequence(最长公共子序列LCS)「建议收藏」
首先令dp[i][j]==x表示A串的前i个字符和B串的前j个字符的最长公共子序列长度为x.
全栈程序员站长
2022/07/10
3130
ECJTUACM16 Winter vacation training #1 题解&源码
//寒假训练赛,第一次拿第一,感觉很爽哦,AC3题! A-------------------------------------------------------------------------------------------- 题目链接:http://codeforces.com/problemset/problem/723/A 题目大意:三个人想在某个地点相遇,给出三个人在数轴上的坐标,求要走的最小值 解析:先排下序,然后另外两个人到中间人的位置为最小值(水题,自己证明),也可以最大的减最小
Angel_Kitty
2018/04/08
6630
POJ 2349 Arctic Network(Kruskal)
       题意是有s个通信工具,p个点,然后给出p个点的坐标,需要把每个点都连起来使其连通,通信工具的作用是使任意两个点的权值为0,问使整个图连通需要最少花费多少。
Ch_Zaqdt
2019/01/10
4150
POJ1003/1004/1005/1207/3299/2159/1083/3094/2388解题(刷一波水题)
POJ 1003 题目链接 http://poj.org/problem?id=1003 大意:长度=1/2+1/3+…+1/n,给定长度值,求n #include<iostream> usi
Michael阿明
2021/02/20
2100
POJ1003/1004/1005/1207/3299/2159/1083/3094/2388解题(刷一波水题)
poj 1426 Find The Multiple (广搜)
http://poj.org/problem?id=1426 题意:求n的倍数m,对于m的要是求所有位的数必须是0或1  a nonzero multiple m of n  n的m倍 广搜:以模作为
用户1624346
2018/04/17
1.1K1
Poj 3286 How many 0's?
http://poj.org/problem?id=3286​ 题意:计算从[a,b]期间中总共有多少个0。 思路:比如1234,我们计算1到1234总共出现了多少个0,。          当个位有
用户1624346
2018/04/17
5030
SDUT 2021 Winter Team Contest – 1
本题定义加法为不进位加法,如 3 + 8 = 1 3 + 8 = 13+8=1,乘法按竖式乘法计算,不进位。给定n(1 \leq n \leq 10^{25}),求满足 a ∗ a = n 的最小的 a,无解输出 − 1。
Here_SDUT
2022/08/08
4120
ACM技巧:尺取法
尺取法通常指的是保存数组的一组下标(起点和终点),然后根据实际情况,交替地推进这两个下标,然后获得结果的方法。
灯珑LoGin
2022/10/31
2600
HDU 2011 菜鸟杯
A:该题写了很久,一直TLE,主要是枚举到n/2时间复杂度实在太高了,其实嘛,这道题就是因式分解,所以就是i*i=n,也就是sqrt(n) #include<stdio.h> #include<math.h> int main() { int n,T,i; int a,b; scanf("%d",&T); while(T--) { scanf("%d",&n); for(i=sqrt(1.0*n); i>=1; i--)
用户1624346
2018/04/17
5980
相关推荐
POJ1019 Number Sequence 题解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验