#入門級(jí)CF1766A題解
這是一道學(xué)完循環(huán)結(jié)構(gòu)就可以去做的入門級(jí)的題目。
題目鏈接
翻譯一下:
如果一個(gè)正整數(shù)只有一個(gè)非零數(shù)字,我們將其稱為極圓整數(shù)。例如,5000、4、1、10、200是極圓整數(shù);42、13、666、77、101不是。
給你一個(gè)整數(shù)n。你要計(jì)算極圓整數(shù)的數(shù)量x, 1 ≤ x ≤ n 1≤x≤n 1≤x≤n。
輸入:
第一行包含一個(gè)整數(shù)t(
1
≤
t
≤
1
0
4
1≤t≤10^4
1≤t≤104)-測(cè)試用例的數(shù)量。
然后,接下來有
t
t
t行。第
i
i
i行包含一個(gè)整數(shù)
n
(
1
≤
n
≤
999999
)
n(1≤n≤999999)
n(1≤n≤999999)。
輸出:
對(duì)于每個(gè)測(cè)試用例,輸出一個(gè)整數(shù),表示極圓整數(shù)的數(shù)量
x
,
(
1
≤
x
≤
n
)
x,(1≤x≤n)
x,(1≤x≤n)
題解:
很明顯,極圓整數(shù)是固定的。
1位 1、2、3…9
2位10、20、30 … 90
3位100、200、300… 900
…
數(shù)據(jù)范圍是
n
(
1
≤
n
≤
999999
)
n(1≤n≤999999)
n(1≤n≤999999),所以大就是
6位100000、200000、300000、…、900000
給的每個(gè)數(shù)字n,其實(shí)就是在找1~n范圍里計(jì)數(shù)所有的極圓整數(shù)的個(gè)數(shù)。
其實(shí)就是需要知道n是幾位的數(shù)字(假設(shè)是m位),然后n的最高位數(shù)字是d,那么計(jì)數(shù)器cnt+=d,然后接下來cnt+=(m-1)*9即可。
總而言之,這道題就演變成了,求n是幾位數(shù)字,并且最高位是幾。
怎么求n是幾位數(shù)字?
while循環(huán) 不斷整除100000、10000、1000、100、10、1,當(dāng)整除的結(jié)果不為零,那么就可以break了,記錄位數(shù)m即可。
參考代碼:
#includeusing namespace std;
int main()
{int t,n,x,m,cnt,f;
cin>>t;
while(t--)
{cin>>n;
x=100000;
m=6;
cnt=0;
f=n/x;
while(f==0)
{ x/=10;
f=n/x;
m--;
}
cnt+=f;
cnt+=(m-1)*9;
cout<
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧