统计一个整数的所有因子的个数_【题解循环嵌套】1095:数1的个数
【題目描述】
給定一個十進制正整數n(1≤n≤10000),寫下從1到n的所有整數,然后數一下其中出現的數字“1”的個數。
例如當n=2時,寫下1,2。這樣只出現了1個“1”;當n=12時,寫下1,2,3,4,5,6,7,8,9,10,11,12。這樣出現了5個“1”。
【輸入】
正整數n。1 ≤ n ≤ 10000。
【輸出】
一個正整數,即“1”的個數。
【輸入樣例】
12
【輸出樣例】
5
說明:
主要考查嵌套循環。
思路分析:
本題與下面題解使用了相同的循環嵌套框架:
【題解·循環】1091:求階乘的和
【題解·循環嵌套】1092:求出e的值
【題解·循環嵌套】1093:計算多項式的值
【題解·循環嵌套】1094:與7無關的數
外層循環遍歷1~n,共循環n次。每循環遍歷一個數字時,在內層循環中統計該數含有多少個1,并把數目累計在計數器中。
而統計某個數含有1的數目,使用了前面題解的方法。即循環判斷某數的每一位上的數字是否等于1。
數據類型:本題無特別之處,所有變量可選擇int類型。
易錯點:
個別同學理解成【數字含有1就當一個】,而實際上,一個數含有多少個1就算多少個。像111這個數字含有3個1,不是算一個,而是算3個。
運行結果:
參考代碼 - C++:
#include?using?namespace?std;
int?main(){
????int?n,?cnt?=?0;?//?cnt是計數器,用于累計1的數目
????cin?>>?n;
????for?(int?i?=?1;?i?<=?n;?i++)
????{
????????int?t?=?i;?//?因不能修改i,所以聲明t臨時存儲i的值
????????while?(t)
????????{
????????????if?(t?%?10?==?1)?cnt++;?//?如果個位數等于1,則累計
????????????t?/=?10;?//?刪除個位數
????????}
????}
????cout?<????return?0;
}
END
注:題目來源于網絡,轉載于《信息學奧賽一本通(C++版)在線評測系統》,點擊下方的【閱讀原文】即可打開該題的鏈接。
題解屬于本微信公眾號【大神編程】原創。
總結
以上是生活随笔為你收集整理的统计一个整数的所有因子的个数_【题解循环嵌套】1095:数1的个数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: transactional注解的使用_J
- 下一篇: hbuid 集成svn_HBuilder