#入門級CF1766A題解
這是一道學完循環(huán)結(jié)構(gòu)就可以去做的入門級的題目。
題目鏈接
翻譯一下:
如果一個正整數(shù)只有一個非零數(shù)字,我們將其稱為極圓整數(shù)。例如,5000、4、1、10、200是極圓整數(shù);42、13、666、77、101不是。
給你一個整數(shù)n。你要計算極圓整數(shù)的數(shù)量x, 1 ≤ x ≤ n 1≤x≤n 1≤x≤n。
輸入:
第一行包含一個整數(shù)t(
1
≤
t
≤
1
0
4
1≤t≤10^4
1≤t≤104)-測試用例的數(shù)量。
然后,接下來有
t
t
t行。第
i
i
i行包含一個整數(shù)
n
(
1
≤
n
≤
999999
)
n(1≤n≤999999)
n(1≤n≤999999)。
輸出:
對于每個測試用例,輸出一個整數(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
給的每個數(shù)字n,其實就是在找1~n范圍里計數(shù)所有的極圓整數(shù)的個數(shù)。
其實就是需要知道n是幾位的數(shù)字(假設是m位),然后n的最高位數(shù)字是d,那么計數(shù)器cnt+=d,然后接下來cnt+=(m-1)*9即可。
總而言之,這道題就演變成了,求n是幾位數(shù)字,并且最高位是幾。
怎么求n是幾位數(shù)字?
while循環(huán) 不斷整除100000、10000、1000、100、10、1,當整除的結(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)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
當前文章:入門級CF1766A題解-創(chuàng)新互聯(lián)
本文來源:http://muchs.cn/article16/pgsgg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供響應式網(wǎng)站、網(wǎng)站導航、服務器托管、虛擬主機、微信小程序、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容