XTU 1227 Digit

原创 2016年05月31日 22:37:31

题目描述

我们把十进制整数依次写成一个字符串,123456789101112…请问第n位数码是多少?
输入

第一行是一个整数T(T≤10000),表示样例的个数。 每行输入一个整数n(1≤n≤788888899)。
输出

每行输出一个样例的结果。
样例输入

2
1
788888899

样例输出

1
1
最近在湘大oj上刷题,为湘大比赛做准备。感觉有点坑,题目不同的提交方式,竟然结果不同,无语了,然后花大量的时间找BUG,无语了!
分析:这一题直接做的暴力,估计会GG,数据有点大。所以我先对1,到9位的数所占的位数都算出来了,比如一位数有 1,2,3,4,5,6,7,8,9 : 2位数有 10 到99 :3位数有100到999。然后具体求输入n所对应的数,并求它的位。.

#include<iostream>
#include<cstring>
#include<string>
#include<cmath>
#include<algorithm>
#include<cstdio>
using namespace std;
__int64  s[10000];
char st[2000];
int main()
{
    s[0]=0,s[1]=9 ;
    __int64 x=9 , y=1;
     for(int i=2; i<=9 ;i++)
     {
        x=x*10+9 ,y*=10;
        s[i]=(x-y+1)*i;
     }

     for(int i=2; i<=9 ;i++)//前n位数之和
     {
        s[i]+=s[i-1];
     }
     int t;
     scanf("%d",&t);
     while(t--)
     {
        __int64  b;
        scanf("%I64d",&b);
        int k,flag=0;
        for(int i=1;i<=9;i++)
        {
            if(s[i]>b) //找到在几位数之间 
            {
                k=i;//k代表 n是几位数
                break;
            }
             if(s[i]==b)//位全是9的情况
            {
                flag=1;
                printf("9\n");
                break;
            }
        }
        if(flag)
        continue;
         __int64 sum;
        sum=b-s[k-1];
        __int64   sum1=sum/k,sum2=sum%k;//sum1 cong 9999…………(k-1个9)扩展sum个位,也就是+sum1,sum2用来处理扩展为不是K整数情况。
        if(sum2!=0)
        {
                k--;
              __int64  n=pow(10,k*1.0);
            n+=sum1;
            sprintf(st,"%I64d",n);
            printf("%c\n",st[sum2-1]);
        }
        else
        {
            k--;
            __int64  n=pow(10,k*1.0);
            n+=(sum1-1);
            sprintf(st,"%I64d",n);
            printf("%c\n",st[k]);
        }
     }
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

mysql导数据遇到错误提示ERROR 1227,Acess denied

作者:天一阁图书管理员 今天群里有前同事在问mysqldump出来的sql文件在导入的时候,报错error1227(42000)at line 18: Acess denied; you need (...
  • 119365374
  • 119365374
  • 2017年08月21日 10:41
  • 898

51nod1227 平均最小公倍数

杜教筛
  • FSAHFGSADHSAKNDAS
  • FSAHFGSADHSAKNDAS
  • 2017年05月13日 16:49
  • 226

mysql 创建函数 error Code: 1227. Access denied;

mysql> show function status; +------+------------------+----------+------------+------------------...
  • zhaoyangjian724
  • zhaoyangjian724
  • 2016年06月03日 19:16
  • 1104

Echo (湘潭大学OJ)

“湖南华园科技杯”第4届湘潭市程序设计比赛暨2012ACM/ICPC湘潭邀请赛(Semilive) http://202.197.224.59/OnlineJudge2/index.php/Prob...
  • hnuzengchao
  • hnuzengchao
  • 2012年05月20日 18:12
  • 5163

【51NOD 1227】平均最小公倍数

DescriptionAns=∑i=ab∑j=1ilcm(i,j)iAns=\sum_{i=a}^b\sum_{j=1}^i\frac{lcm(i,j)}{i}Solution题目要我们求的就是这个嘛...
  • HOWARLI
  • HOWARLI
  • 2017年03月17日 19:49
  • 509

Intel(R) Extreme Tuning Utility(XTU)设置调试教程

此软件为Intel官方推出的至尊超频软件,推荐散热良好并且是K或者X型号的CPU使用。 这是博主的配置 大概比较菜。。 然后这是这款软件目前最新的版本 会警告你一旦出事都不负责任(锅甩得...
  • qq_20240999
  • qq_20240999
  • 2017年03月25日 22:04
  • 13657

【51Nod1227】平均最小公倍数-杜教筛

【51Nod1227】平均最小公倍数-杜教筛
  • Maxwei_wzj
  • Maxwei_wzj
  • 2017年06月18日 12:10
  • 234

ERROR 1227 (42000): Access denied; you need (at least one of)...

使用Navicat链接公司测试数据库时,填入了用户名密码等信息,链接测试通过。但提示ERROR 1227 (42000): Access denied; you need (at least one ...
  • nb0315
  • nb0315
  • 2017年11月17日 14:51
  • 205

[51nod1227]平均最小公倍数(莫比乌斯反演+杜教筛)

哇ATP还没有背笔试题啊!!还有4天就要走了啊!!
  • FromATP
  • FromATP
  • 2017年07月12日 09:04
  • 409

XTU 1270 Unique Digit Number(打表,推公式)

数位不同的数 http://202.197.224.59/exam/index.php/problem/read/id/1270 题目描述数位不同的数是指所有数位上的数码都不一样的数,比如“123...
  • mMingfunnyTree
  • mMingfunnyTree
  • 2017年10月10日 20:21
  • 96
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:XTU 1227 Digit
举报原因:
原因补充:

(最多只允许输入30个字)