题:有一个无穷数列,其通项表示为: a[n]=10*10*... n=0,1,2,3..... 构成了1,10,100,1000... 把它连起来,就成了数串。 判断数串的第i位到底是0还是1 .性能要求1s
程序如下:
int i=0;
int total =0, j=1, pos=0; //total:终点 pos: 起点 j:第几个数字
//输入
cout<<"Please input digit:";
cin>>i;
while(1){
pos=total+1;
total+=j;
if(total>=i && i>=pos)
break;
++j;
}
double num2 = pow(10.0,j-1);
int digit = (i==pos)?1:0; //左起相对位置
cout<<" 数字表示:"<<num2<<endl;
cout<<" 总长度:"<<total-pos+1<<endl;
cout<<" 第"<<i<<"位的数字:"<<digit<<endl;
system("pause");
return 0;
}
运行结果:
Please input digit:800
数字表示:1e+039
总长度:40
第800位的数字:0
Press any key to continue . . .