/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package Test;
/**
*
* @author Administrator
*/
public class OneNumbers24 {
public static void main(String[] args) {
//问题一 解法一
int n=11;
int num1 = count1(n);
System.out.println("num1="+num1);
//问题一 解法二
int num2 = count2(n);
System.out.println("num2="+num2);
}
private static int count1(int n) {
int iCount =0;
for(int i=1;i<=n;i++){
iCount +=Count1InAInteger(i);
}
return iCount;
}
/*
计算每一个数中1的个数
*/
private static int Count1InAInteger(int n) {
int count =0;
while(n!=0){
count +=(n%10==1)?1:0;
n/=10;
}
return count;
}
private static int count2(int n) {
int iCount =0;
int iFactor=1;
int iLowerNum =0;
int iCurrNum =0;
int iHigherNum =0;
while(n/iFactor !=0){
iLowerNum = n-(n/iFactor)*iFactor;
iCurrNum = (n/iFactor) %10;
iHigherNum = n/(iFactor*10);
switch(iCurrNum){
case 0:iCount +=iHigherNum * iFactor;
break;
case 1:iCount +=iHigherNum *iFactor+iLowerNum+1;
break;
default:iCount +=(iHigherNum +1)*iFactor;
break;
}
iFactor *=10;
}
return iCount;
}
}
其中解法二对数字的处理,获取高低位的方式在其他地方也可以用到
编程之美2.41的数目Java版
最新推荐文章于 2021-02-18 23:54:41 发布