zoukankan      html  css  js  c++  java
  • 杭电1597--find the nth digit--假设:S1 = 1,S1=12,S3=123,S4=1234...

    我是把它分层来求的,也就是说第一层是1,第二层是12,第三层是123......你们该懂的!!

    #include <iostream>
    #include <cmath>
    using namespace std;
    int main (void)
    {
        int k,n,ss[10]={0,1,2,3,4,5,6,7,8,9}; //归根结底是在123456789里面取
        double a,b,c,d,e,f;
        cin>>k;
        while(k--&&cin>>n)
        {
            a=n*1.0;
            b=0.5+sqrt(2*a+0.25);  //求出n所在的大概层数
            b=(int)b;
            a=b*(b-1)/2;    //返回来把这一层最后面那个求出来
            if(n-a==0)     //如果正好是这一层最后那个数
            {
                b-=1;     //因为层数和公式里面是相差1的关系
                while(b>9)b-=9;   //取9的模
                n=b;
            }
            else      //不是最后那个就是下一层的数但是在下一层最后一个之前
            {
                n-=a;     //提出其在那一层中的位置
                while(n>9)n-=9;
            }
            cout<<ss[n]<<endl;
        }
        return 0;
    }
  • 相关阅读:
    JAVA基础总结(二)
    JAVA基础知识-关键字
    JAVA SE基础知识
    (七)uboot NFS启动
    (六)uboot引导启动内核
    U_boot 的 bootcmd 和bootargs参数详解
    uboot报错
    制作uImage
    配置内核支持NFS启动文件系统
    在内核中增加对yaffs文件系统的支持
  • 原文地址:https://www.cnblogs.com/jingdianITnan/p/3224416.html
Copyright © 2011-2022 走看看