洛谷 P2022 有趣的數 題解

2022-05-27 15:33:10 字數 975 閱讀 6534

洛谷原題

實在想不出來啊!!!又無恥看題解。完了,今年提高組要涼。

數學推導。

首先考慮k所有可能的位置中,最小的那乙個。

以k=234為例,計算k之前(包括k)有幾個元素:

一位數:1~2(2個)

兩位數:10~23(14個)

三位數:100~234(135個)

所以k=234時,最小可能的位置是2+14+135=151。

記k最小可能的位置是pos,那麼顯然有:

如果pos==m,答案就是k。

如果pos>m,無解。

如果pos挨個位數加唄。

兩位數不夠加三位數,三位數不夠加四位數,四位數不夠加五位數……

如果夠了,跳出迴圈即可。

具體實現看**。

#include#include#include#define ll long long

using namespace std;

templateinline type read(void)

while(ch>='0'&&ch<='9')

return f*x;

}int k,m;

int base,len;

ll mi[20];//mi[i]為10的i次冪。

ll ans;

inline int calc(int k);

sprintf(s,"%d",k);

int ans=0,w=0;

len=strlen(s);

for(register int i=0;i();

m=read();

for(register int i=0;i<10;++i)

else break;

}ans+=m-1;//注意細節。

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