概述
题目:
分析:
位数-个数
1—9
2—90x2
3—900x3
先定他是几位数。
如果他是3位数,减去一位数的个数总和,减去一位数的个数总和,代表的就是从100开始他是第几个数了,除以3,则可以判断他是在从100开始的第几个数里面,再利用取余,就可以判断出他是这个数里面的第几个了。
代码:
int main()
{
int n=17;
long long A[11];
//表示i位数一共有多少位,严格的 i位数,前面不能是0
//int 的最大值 2147483647
for(int i=1;i<11;i++)
{
A[i]=9*pow(10,i-1)*i;
}
//定位数。
int c=0;
int all=0;
for(int i=1;;i++)
{
all=all+A[i];
c++;
if(all==n) return 9;
if(all>n) break;
}
if(c==1) return n;
all=all-A[c];
n=n-all;
cout<<"c:"<<c<<endl;
cout<<"n:"<<n<<endl;
int t1=(n-1)/c;
t1=t1+pow(10,c-1);
cout<<"t1: "<<t1<<endl;
int t2=n%c;
if(t2==0) {
return t1%10;
}
cout<<"t2: "<<t2<<endl;
int t3=c-t2;
cout<<"t3: "<<t3<<endl;
cout<<(int)(t1/pow(10,t3))%10;
return (int)(t1/pow(10,t3))%10;
}
最后
以上就是糊涂灯泡为你收集整理的leetcode:400. 第N个数字(数学)的全部内容,希望文章能够帮你解决leetcode:400. 第N个数字(数学)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复