【2017年】阿里巴巴算法笔试第二题

来源:互联网 发布:apache官方下载32位 编辑:程序博客网 时间:2024/05/16 23:57


第二题:菜鸟仓库是一个很大很神奇的地方,各种琳琅满目的商品整整齐齐地摆放在一排排货架上,通常一种品类(sku)的商品会放置在货架的某一个格子中,格子设有统一的编号,方便工人们拣选。 有一天沐哲去菜鸟仓库参观,无意中发现第1个货架格子编码为1,第2-3个分别为1,2,第4-6个格子分别是1,2,3,第7-10个格子编号分别是1,2,3,4,每个格子编号都是0-9中的一个整数,且相邻格子的编号连在一起有如下规律 1|12|123|1234|...|123456789101112131415|...|123456789101112131415……n 这个仓库存放的商品品类非常丰富,共有1千万多个货架格子。沐哲很好奇,他想快速知道第k个格子编号是多少?


/** 请完成下面这个函数,实现题目要求的功能 **//** 当然,你也可以不按照这个模板来作答,完全按照自己的想法来 ^-^  **/#include <iostream>#include <stdio.h>  #include <math.h>  #include <stdlib.h> #include <string>#include<sstream>using namespace std;int Get(int n){    if(n <= 0)  return -1;    int x;    int start = 1;    int last;    int i = 0;string biaoji = "";    while(1)    {        last = start;        start = start + i;        i ++;stringstream ss;        ss << i;biaoji = biaoji + ss.str();        if(start > n)            break;    }    start = last;    int index = n - start;x = biaoji[index] - '0';    return x;}int main()  {      int n;    scanf("%d",&n);    int r = Get(n);            printf("%d\n",r);  }



原创粉丝点击