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;
    }
  • 相关阅读:
    loj6033.「雅礼集训 2017 Day2」棋盘游戏
    loj6032. 「雅礼集训 2017 Day2」水箱
    BZOJ 5217 [Lydsy2017省队十连测] 航海舰队
    P4173 残缺的字符串
    P3723 [AH2017/HNOI2017]礼物
    P3321 [SDOI2015]序列统计
    P4841 [集训队作业2013]城市规划
    MySQL基础
    MySQL查询
    HTTP响应码
  • 原文地址:https://www.cnblogs.com/jingdianITnan/p/3224416.html
Copyright © 2011-2022 走看看