我是靠谱客的博主 糊涂灯泡,最近开发中收集的这篇文章主要介绍leetcode:400. 第N个数字(数学),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目:

在这里插入图片描述

分析:

位数-个数
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个数字(数学)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部