import java.util.Scanner;
/**
* 当计算右数第i位包含的X的个数时
*
* 1.取第i位左边(高位)的数字,乘以10^i-1,得到基础值 a
* 2.取第i位数字,计算修正值
* (1)如果大于X,则结果为a+10^i-1
* (2)如果小于X,则结果为a
* (3)如果等于X,则取第i位右边(低位)数字,设为b,最后结果为a+b+1
*
* @author Administrator
*
*/
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
}
//1--n中 整数中x的个数
public static int name(int n,int x) {
if(n<0){
return 0;
}
int high,low,curr,tmp,i=1;
high=n;
int total=0;
while(high!=0){
high=n/(int)Math.pow(10, i); //获取第i位的高位
tmp= (n%(int)Math.pow(10, i));
curr=tmp/(int)Math.pow(10, i-1);//获取第i位
low=tmp%(int)Math.pow(10, i-1);//获取第i位的低位
if(curr==x){
total+=high*(int)Math.pow(10, i-1)+low+1;
}else if(curr<x){
total+=high*(int)Math.pow(10, i-1);
}else{
total+=(high+1)*(int)Math.pow(10, i-1);
}
i++;
}
return total;
}
}
牛客网 求1到n 整数中1的个数
最新推荐文章于 2020-07-09 11:26:25 发布