有多少1
題目:給定一個十進制的正整數,寫下從1開始,到N的所有整數,然后數一下其中出現“1”的個數。
要求: 寫一個函數 f(N) ,返回1 到 N 之間出現的“1”的個數。例如 f(12)? = 5。一、設計思路:可以通過對一個多位數分別求它各個位上的1出現的次數相加的到1出現的次數。如123,其中個位上出現1的次數為13次,十位上出現的次數為20次,百位上出現的次數為24次,相加的到1出現的次數為57次。
二、代碼:
import java.util.Scanner; public class main {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubScanner sc=new Scanner(System.in);int n=sc.nextInt();int i=1;int t=0;for(i=1;i<=n;i*=10){int m= 10*i;if((n%m)/i==0){t+=(n/m)*i;}else if((n%m)/i==1){t+=(n/m)*i;t+=n%i+1;}else{t+=(n/m +1)*i;}}System.out.print(t);}}三、截圖
四、總結:這個問題的主要難題是如何確定各個位上出現1次數的計算,剛開始我也不會算,經過很長時間,通過比較各個位數上出現次數,找到了規律。
?
轉載于:https://www.cnblogs.com/act-gh95/p/4553095.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
- 上一篇: 给尊敬的王老师
- 下一篇: 关于串口接收数据不全的问题