1出現(xiàn)的次數(shù)
輸入一個整數(shù)n,求從1到n這n個整數(shù)的十進制表示中1出現(xiàn)的次數(shù)。例如輸入12,從1到12這些整數(shù)中包含1的數(shù)字有1,10,11和12,1一共出現(xiàn)了5次。原文
解題思路
個位
考慮將n的十進制的每一位單獨拿出討論,每一位的值記為weight。
以534為例,在從1增長到n的過程中,534的個位從0-9變化了53次,記為round。每一輪變化中,1在個位出現(xiàn)一次,所以一共出現(xiàn)了53次。
再來看weight的值。weight為4,大于0,說明第54輪變化是從0-4,1又出現(xiàn)了1次。我們記1出現(xiàn)的次數(shù)為count,所以:
count = round+1 = 53 + 1 = 54
如果此時weight為0(n=530),說明第54輪到0就停止了,那么:
count = round = 53
十位
從1到n,每增加10,十位的weight才會增加1,所以,一輪0-9周期內(nèi),1會出現(xiàn)10次。即rount*10。
再來看weight的值。當此時weight為3,大于1,說明第6輪出現(xiàn)了10次1,則:
count = round*10+10 = 5*10+10 = 60
如果此時weight的值等于0(n=504),說明第6輪到0就停止了,所以:
count = round*10+10 = 5*10 = 50
類推
534 = (個位1出現(xiàn)次數(shù))+(十位1出現(xiàn)次數(shù))+(百位1出現(xiàn)次數(shù))=(53*1+1)+(5*10+10)+(0*100+100)= 214
金子分塊
一塊金子做為給雇員的工資,工作七天,每天都需要付工資,不能拖欠,也不能提前。至少要把金子分為多少塊?每天如何付?原文
分為7份,把它分成3份,第一份占 1 /7,第二份占2/7,第三份占4/7。
解析
第一刀切上整條黃金的七分之一,第二刀切上整條黃金的七分之二,剩下的七分之四為一份。
第一天給他你七切好的那七分之一,第二天給他你切好的七分之二,讓他返還你第一天付給他的那七分之一,第三天,給他他返還來的那七分之一,第四天,給他剩余地的七分之四,要回之前給他的那兩塊金條,第五天,將你要回的那七分之一的金條給他,第六天,要回七分之一,給他七分之二的那塊,第七天,給他最后一塊就完了。