分别计算每个位出现1的个数。
public class Countone {
public static int Countone(int n){
int icount=0;
int iFactor=1;
int iLowerNum=0;
int iCurrNum=0;
int iHighNum=0;
while(n/iFactor!=0){
iLowerNum=n%iFactor;
iCurrNum=n%(iFactor*10)-iLowerNum;
iHighNum=n/(iFactor*10);
switch(iCurrNum){
case 0:
icount+=iHighNum*iFactor;
break;
case 1:
icount+=iHighNum*iFactor+iLowerNum+1;
break;
default:
icount+=(iHighNum+1)*iFactor;
break;
}
iFactor*=10;
}
return icount;
}
public static void main(String args[]){
System.out.println(Countone(93));
System.out.println(Countone(193));
}
}