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

poj 1019 Number Sequence

2011-09-05 20:17 387 查看
原文-acmj1991

题意:按规律给了你一些数字,让你找出第n位数是多少?

思路:打表和简单的推理….

费了我大半天的时间..真是不在状态啊…

#include<stdio.h>
#include<iostream>
using namespace std;

#define maxN 40010
long long key[maxN],wi[maxN],nu[maxN];
int m;

void fun()
{
int mm=0;
for(int i=1;i<maxN;i++)
{
int k=i,w=0;
while(k){
w++;
k/=10;
}
wi[i]=w;
mm+=w;
nu[i]=mm;
key[i]=key[i-1]+mm;
}
}
void solve()
{
int l=1,r=40000;
while(l+1!=r){
int mid=(l+r)/2;
if(key[mid]>m)r=mid;
else l=mid;
}
if(key[l]==m)
printf("%d\n",l%10);
else{
m=m-key[l];
for(int i=1;i<40000;i++){
if(nu[i-1]<m&&nu[i]>=m){
int len=m-nu[i-1];l=i;
for(int j=1;j<=wi[i]-len;j++)
l/=10;
printf("%d\n",l%10);
break;
}
}
}
}

int main()
{
fun();
int t;
scanf("%d",&t);
while(t--){
scanf("%d",&m);
solve();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: