您的位置:首页 > 产品设计 > UI/UE

10706 - Number Sequence

2013-03-14 23:46 225 查看
描述:题目的意思就是给你一个数,输出这个数的位置为什么数,当然,规律很简单,就是从小一直递增起来的,我的思路就是把这些数全都暴出来,然后查询就可以了
#include <cstdio>
#include <cstdlib>
long num[40000];
char str[1000000];
long count,n,m;
void solve()
{
num[1]=1;
count=2;
str[1]='1';
for(int i=2; i<40000; i++)
if(i<10)
{
num[i]=num[i-1]+1;
str[count++]=i+'0';
}
else if(i<100)
{
num[i]=num[i-1]+2;
str[count++]=i/10+'0';
str[count++]=i%10+'0';
}
else if(i<1000)
{
num[i]=num[i-1]+3;
str[count++]=i/100+'0';
str[count++]=(i/10)%10+'0';
str[count++]=i%10+'0';
}
else if(i<10000)
{
num[i]=num[i-1]+4;
str[count++]=i/1000+'0';
str[count++]=(i/100)%10+'0';
str[count++]=(i/10)%10+'0';
str[count++]=i%10+'0';
}
else
{
num[i]=num[i-1]+5;
str[count++]=i/10000+'0';
str[count++]=(i/1000)%10+'0';
str[count++]=(i/100)%10+'0';
str[count++]=(i/10)%10+'0';
str[count++]=i%10+'0';
}
}
int main()
{
solve();
// freopen("a.txt","r",stdin);
scanf("%ld",&n);
while(n--)
{
scanf("%ld",&m);
long i;
for(i=1;; i++)
if(m>num[i]) m-=num[i];
else break;
printf("%c\n",str[m]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: