现在的位置: 首页 > 综合 > 正文

poj1019

2013年12月02日 ⁄ 综合 ⁄ 共 644字 ⁄ 字号 评论关闭

题挺简单的,代码写的很乱,但是这是我很长时间以来一下AC的啊!哎~!

#include<iostream>
#include<cstdio>
#include<string>
using namespace std; 	
int T,a[40000],b[40000];
int fun(int n)
{
	__int64 i,j,k,len=1;
	i=9;
	j=1;
	len=1;
	k=9;
	while(n>len)
	{		
		i--;
		if(i==0)
		{
			k*=10;
			i=k;
			j++;
		}
		n-=len;
		len+=j;

	}
	return n;
}
int main()
{

	__int64 i,j,k,n,len=1,sum=0;
	k=9;
	j=1;
	n=9;
	i=1;
	for(;i<=32000; i++)
	{
		a[i]=j;//记录的是数
		b[i]=len;//记录的是长度
		n--;
		j++;
		if(n==0)
		{
             len++;
			 k*=10;
			 n=k;
		}
	} 
	for(j=2; j<32000; j++)
		b[j]+=b[j-1];
	b[0]=0;
	scanf("%d",&T);
//	for(int l=1; l<=80; l++) 
	while(T--)
	{
//        n=l;
		scanf("%I64d",&n);
		n=fun(n);
		for(j=1; j<32000; j++)
		{
          if(n>b[j-1] && n<=b[j])
			  break;
		}
		n-=b[j-1];
		sum=b[j]-b[j-1];
		int m=a[j];
		for(k=1; k<=sum-n;k++)
			m=m/10;
		printf("%d\n",m%10); 
	}
	return 0;
}

 

抱歉!评论已关闭.