傳送門
將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位的有趣的數...