洛谷 P2022 有趣的數 解題報告

2022-04-30 05:30:09 字數 867 閱讀 1746

讓我們來考慮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。

輸入檔案只有一行,是兩個整數k和m。

輸出檔案只有一行,是最小的n,如果不存在這樣的n就輸出0。

【資料約定】

40%的資料,1<=k,m<=10^5;

100%的資料,1<=k,m<=10^9。

我大概是看了題解胡亂搞過得。。

首先手玩玩出如何在給定的集合找到指定位置的數,然後玄學看出單調性開始二分答案,最後要判一堆一堆的東西。。

這個題解寫的挺好,只是看了前面我後面就去自己yy了

亂搞的**:

#include #define ll long long

ll m,k,c=1;

ll get(ll n,ll x,ll d)

ll get0(ll x)

return cnt;

}int main()

}int t=get0(k);

if(t>m)

else if(t==m)

m-=t-1;

ll l=k*10,r=1e18;

while(cm)

while(l>1;

if(get(mid,k,c)>=m)

r=mid;

else

l=mid+1;

}printf("%lld\n",l-1);

return 0;

}

2018.7.9

洛谷 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位的有趣的數...