int count1in1ton(int n)
return n;
}int countnumber1(int n)
return
count;
}
程式設計之美上的方法:
//大體的思路是這樣的:
//假設n=abcde,這裡a,b,c,d,e分別是十進位制數n的各個位數上的數字。如
//果要計算百位上出現1的次數,它會受到三個因素影響:百位數上的數字
//,百位以下的數字,百位以上的數字。
//a、如果百位上的數字為0,則百位出現1的次數由更高位決定。如12013,
// 則可以知道百位出現1的情況可能是100~199,1100~1199,2100~2199。
// 11100~11199,一共1200個。也就是由更高位數字(12)決定,並且等
// 於更高位數字(12)*當前位數(100);
//b、如果百位上數字為1,則百位上出現1的次數由更高位和低位共同決定。
// 例如對於12113,受高位的影響百位出現1的個數為等於更高位數字(12)
// *當前位數(100)=1200.但是它還受低位影響,等於低位數字(13)+1;
//c、如果百位上的數字大於1(即為2-9),則百位出現1的次數僅由更高位
// 決定,比如12213,等於更高位數字+1(12+1)*當前位數(100)=1300.
int count1in1ton(int n)
factor *= 10;
}return
count;
}
在從1到n的正數中1出現的次數
題目 輸入乙個整數n,求從1到n這n個整數的十進位制表示中1出現的次數。例如輸入12,從1到12這些整數中包含1 的數字有1,10,11和12,1一共出現了5次。我的思路是計算每一位上1會出現在哪些數字中。建乙個陣列a n 放置每一位,從個位到最高位,0 n,這裡n 4。a 0 5,a 1 0,a ...
求在從1到n的正數中1出現的次數
題目 輸入乙個整數n,求從1到n這n個整數的十進位制表示中1出現的次數。例如輸入12,從1到12這些整數中包含1 的數字有1,10,11和12,1一共出現了5次。問題描述 給定乙個十進位制正整數n,寫下從1開始,到n的所有整數,然後數一下其中出現的所有 1 的個數。例如 n 2,寫下1,2。這樣只出...
面試題32 在從1到n的正數中1出現的次數
1 方法一 class solution1 n n 10 return cnt int numberof1between1andn solution int n return cnt 2 方法二 使用遞迴的思路 class solution2 else if 1 len first digit 0 ...