有多少1
題目:給定一個十進制的正整數(shù),寫下從1開始,到N的所有整數(shù),然后數(shù)一下其中出現(xiàn)“1”的個數(shù)。
要求: 寫一個函數(shù) f(N) ,返回1 到 N 之間出現(xiàn)的“1”的個數(shù)。例如 f(12)? = 5。一、設計思路:可以通過對一個多位數(shù)分別求它各個位上的1出現(xiàn)的次數(shù)相加的到1出現(xiàn)的次數(shù)。如123,其中個位上出現(xiàn)1的次數(shù)為13次,十位上出現(xiàn)的次數(shù)為20次,百位上出現(xiàn)的次數(shù)為24次,相加的到1出現(xiàn)的次數(shù)為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);}}三、截圖
四、總結:這個問題的主要難題是如何確定各個位上出現(xiàn)1次數(shù)的計算,剛開始我也不會算,經過很長時間,通過比較各個位數(shù)上出現(xiàn)次數(shù),找到了規(guī)律。
?
轉載于:https://www.cnblogs.com/act-gh95/p/4553095.html
《新程序員》:云原生和全面數(shù)字化實踐50位技術專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結
- 上一篇: 给尊敬的王老师
- 下一篇: 关于串口接收数据不全的问题