ULONGLONG Sumls(ULONGLONG N) { ULONGLONG iCount = 0; ULONGLONG iFactor = 1; ULONGLONG iLowerNum = 0; ULONGLONG iCurrNum = 0; ULONGLONG 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; }
/** * 从1到1000000的所有自然数,数字“1”一共出现了多少次? * 例:自然数101中,数字“1”出现了2次,自然数1011中, * 数字“1”出现了3次,请写明计算过程及结果。 * @author Administrator * */ public class CountOne { public static void main(String[] args) { Long l = (long) 1000000; long count=0; for(Long i=(long) 0;i<=l;i++){ String str = i.toString(); // System.out.println(str); count = count + countone(str); } System.out.print(count); } private static long countone(String s1) { int countone=0; for(int i=0;i<s1.length();i++){ if(s1.charAt(i)=='1'){ countone ++; } } return countone; } }