題目如下:
在1至2019中,有多少個數的數位中包含數字9?
注意,有的數中的數位中包含多個9,這個數只算一次。例如,1999這個數包含數字9,在計算只是算一個數。
下面給出一種解法
#include<stdio.h>
int main()
{
int i,a=0;
for(i=1;i<=2019;i++)
{if(i%10==9||i/10%10==9||i/100%10==9)
a++;
}
printf("%d",a);
}
請大佬看看是否可行,或者有沒有更好的方法。
uj5u.com熱心網友回復:
從程式角度來說,lz的解法是可以的,因為1到2019的回圈次數很快如果要摳,那就是可以直接用組合來算,比如個位是9有多少種,十位是9有多少種,百位是9有多少種,加起來去掉重復即可。
uj5u.com熱心網友回復:
我覺得這是思路最簡單的方法啊,復雜的事情交給計算機uj5u.com熱心網友回復:
再摳下,供參考:#include<stdio.h>
int main(int argc, char* argv[])
{
int i=2019,n=0,m;
while(m = i,i-- >= 9){
while(m >= 9){
if(m%10==9){n++;break;}
m /= 10;
}
}
printf("n=%d",n);
return 0;
}
uj5u.com熱心網友回復:
每10個數中至少含有一個9,對于一百以內,需要考慮十位數是9的,再考慮千位是9的。這樣算一下總共有多少。這樣大大減少回圈次數。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/258213.html
標籤:新手樂園
上一篇:關于字串編碼的問題
