zoukankan      html  css  js  c++  java
  • poj 1019

    懂了

    题意是给一串 1 12 123 1234 12345 123456 。。。。这样的数字问第

    i个数字是多少

    Sample Input

    2
    8
    3

    Sample Output

    2
    2
     1 #include<math.h>
     2 #include<cstdio>
     3 #include<iostream>
     4 using namespace std;
     5 unsigned int a[31270],s[31270]; //a是到第i个数字的位数,s是第i组的位数
     6 void reset()//打表
     7 {
     8     int i;
     9     a[1]=1;
    10     s[1]=1;
    11     for(i=2;i<31270;i++)
    12     {
    13         a[i]=a[i-1]+(int)log10((double)i)+1;
    14         s[i]=s[i-1]+a[i];
    15     }
    16     /*for(i=1;i<=100;i++)
    17     {
    18         printf("%d ",a[i]);
    19     }
    20     printf("
    ");
    21     for(i=1;i<=100;i++)
    22     {
    23         printf("%d ",s[i]);
    24     }*/
    25 }
    26 
    27 int main()
    28 {
    29     int T;
    30     int n;
    31     int i;
    32     scanf("%d",&T);
    33     reset();
    34     while(T--)
    35     {
    36         scanf("%d",&n);
    37         i=1;
    38 
    39         while(s[i]<n) i++;  /* 找到 n 所在的组 */
    40 
    41         int pos=n-s[i-1];   /* n 在该组的下标 */
    42         int tmp=0;
    43         for(i=1;tmp<pos;i++)    /* length: n指向的数字的最后一位的下标 */
    44         {
    45             tmp+=(int)log10((double)i)+1;
    46         }
    47         printf("%d %d
    ",pos,tmp);
    48         int k=tmp-pos;
    49         printf("%d
    ",(i-1)/(int)pow(10.0,k)%10) ;/*从右向左求,比如123456,k=2,则结果为4*/ /* 去掉所求位后面的数字然后取余 */
    50     /* i: n指向的数字 + 1 */
    51 
    52     }
    53     return 0;
    54 
    55 }
  • 相关阅读:
    windows 系列机器查看tcp 配置
    test windows live writer
    win7 mysql 启动 问题
    用enum枚举量做下标初始化数组
    二层VXLAN静态配置
    pip install scrapy报错原文
    python练习2
    pycharm字体大小设置快捷键的方法
    python练习1
    centos 7下修改IP地址为静态
  • 原文地址:https://www.cnblogs.com/cnblogs321114287/p/4277630.html
Copyright © 2011-2022 走看看