洛谷 P2022 有趣的數 思維

2021-09-25 23:52:28 字數 1252 閱讀 7058

傳送門

將1 —n

1—n1—

n的所有正整數都按照字典序排序,指定k、m

k、mk、

m問nn

n至少是多少時k

kk的位置是第mmm位

這麼大的資料範圍我們顯然不能乙個個列舉,我直接推規律好了

有個十分明顯的規律,1、10

、100

1、10、100

1、10、1

00這些數肯定在前面的

當n

nn小於k

kk時,能對答案做出貢獻的必定是前幾位小於k

kk例子:k

=234

k=234

k=23

4那麼一位數能做出貢獻的就是1—2

1—21—

2兩位數能做出貢獻的就是10—23

10—23

10—2

3三位數能做出貢獻的就是100

—233

100—233

100—23

3我們計算出總貢獻後得到s

ss若s=m

s=ms=

m那n=

kn=k

n=k,s

>

ms>m

s>

m則肯定不合法

現在我們開始考慮s

ss不足的情況,我們直接從1、10

、100……

1、10、100……

1、10、1

00……

開始計算

最後答案統計時,我們需要−1-1

−1,因為當前的100……

100……

100…

…已經計算過了

#include

#include

#include

#include

#include

#include

#define ll long long

using namespace std;

inline ll read()

while

(s>=

'0'&&s<=

'9')

return d*f;

}ll mm[25]

,len;

ll solve

(int x)

return ans;

}int

main()

cout

}

洛谷 P2022 有趣的數

讓我們來考慮1到n的正整數集合。讓我們把集合中的元素按照字典序排列,例如當n 11時,其順序應該為 1,10,11,2,3,4,5,6,7,8,9。定義k在n個數中的位置為q n,k 例如q 11,2 4。現在給出整數k和m,要求找到最小的n,使得q n,k m。輸入輸出格式 輸入檔案只有一行,是兩...

洛谷P2022 有趣的數

題目鏈結 首先求出1 k中有多少個在k前面的數的個數,若 m,則無解 比如12345,從第一位開始,1 0 1 共2個 1 0 1 12 10 12共3個 12 10 1 123 100 123 共24個 123 100 1 1234 1000 1234 共235個 1234 1000 1 之後看還...

洛谷 P2022 有趣的數

我們把乙個數稱為有趣的,當且僅當 它的數字只包含0,1,2,3,且這四個數字都出現過至少一次。所有的0都出現在所有的1之前,而所有的2都出現在所有的3之前。最高位數字不為0。因此,符合我們定義的最小的有趣的數是2013。除此以外,4位的有趣的數還有兩個 2031和2301。請計算恰好有n位的有趣的數...