暑假集訓test14

2021-08-07 08:19:27 字數 2848 閱讀 7794

我會告訴你test13被我吃了嗎?

當然不會。

哦其實還多吃了一道題。。。。。

fst是一名可憐的 oier,他很強,但是經常 fst,所以 rating 一直低迷。

但是重點在於,他真的很強!他發明了一種奇特的加密方式,這種加密方式只有oier

才能破解。

這種加密方式是這樣的:對於乙個 01 串,他會構造另乙個 01 串,使得原串是在新串中沒有出現過的最短的串。

現在 fst 已經加密好了乙個串,但是他的加密方式有些 bug ,導致沒出現過的最短的串不止乙個,他感覺非常懊惱,所以他希望計算出沒出現過的最短的串的長度。

輸入格式

一行,乙個 01 串。

輸出格式

一行,乙個正整數,表示沒有出現過的最短串的長度。

樣例資料

輸入

100010110011101

輸出

4備註

【資料範圍】

測試點 1、2、3 的串長度≤10;

測試點 3、4、5 的串長度≤100;

測試點 6、7、8、9、10 的串長度≤10^5;

唔,根據某。。。證明答案很小,所以直接列舉答案長度,對於某種長度,掃瞄字串,2^ans儲存每種串有沒有出現過。可以加上hash的優化。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

int n,m,l,r,mid,ans;

char s[200000];

bool f[200000];

inline

bool zql(int x)

//是否長度為x的串都存在。

for(;j>=1;j--)

if(t==(1

true;

else

return

false;

}int main()

cout

<1

0;}

fst 作為 oier ,經常會遇到和階乘有關的問題,但是乙個數的階乘末尾總是會有很多 0 ,fst 認為這很不美觀,但是 fst 覺得如果 0 的個數是偶數的話,還是可以接受的。

所以就有這樣乙個問題,fst 想知道 0!,1!,2!… … (n-1)!,n! 中有多少數的末尾 0 個數是偶數。(注意0!是1,0算偶數)

輸入格式

讀入有若干行,每行乙個正整數 n ,最後一行是乙個 -1 。

輸出格式

對於每個 n 輸出一行,為 0!,1!,2!… … (n-1)! ,n! 中末尾 0 個數是偶數的個數。

樣例資料

輸入

2 3

10 -1

輸出

3 4

6備註

【資料範圍】

測試點 1、2:n≤10;資料組數=1;

測試點 3、4:n≤10000;資料組數=10;

測試點 5、6、7、8:n≤10^9;資料組數=10^5;

測試點 9、10:n≤10^18;資料組數=10^5;

強行複製題解,如下。

題解:

首先我們發現乙個數如果不是5的倍數,那麼他的答案一定是和上乙個數一樣的,因此我們首先把n的多餘部分處理掉,使數的個數是5的倍數,再把n除以5,(最後記得把答案除以5))

然後我們就只需要處理0×5,1×5,2×5,…n×5這個序列,我們發現乙個數k×5,如果k不是5的倍數,那麼他的答案和(k-1)×5是相反的,因此我們還是先把n的多餘部分處理掉,使數的個數是5的倍數,然後看如果5個5個一組一共有多少組,每組中k不是5的倍數的數一定會貢獻2的答案,因此我們把答案加上組數×2,然後再把n除以5

現在我們只需要處理0×25,1×25,2×25…n×25這個序列,我們發現k×25和k的答案是一樣的,因此這個序列和0,1,2…n的答案是一樣的,因此我們遞迴的處理就行了,此時n已經是之前的1/25了

現在我們來證明k*25和k的答案是一樣的:

乙個數p的答案顯然就只和[p/5]+[p/25]+[p/125]+…的奇偶性有關,而25*k只比k多了兩項就是[5*k]+[k]=6*k,這是個偶數,不影響奇偶性。

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

long

long ans,n=0,zql,tot,i,j;

long

long f[105],g[105][2];

int main()

while(n>=0)

n%=f[i];

}cout

<0][zql]0;}

嗯對就這樣。

安。來自2017.8.23.

——我認為return 0,是乙個時代的終結。

演算法 test14 圓排列

圓排列問題 給定n個圓的半徑序列,將它們放到矩形框中,各圓與矩形底邊相切,求具有最小排列長度的圓排列。對於給定的n個圓,設計乙個優先佇列式分支限界法,計算n個圓的最佳排序方案,使其長度達到最小。按照回溯法搜尋排列樹的演算法框架,設開始時 a r1,r2,rn 是所給的 n 個圓的半徑,則相應的排列樹...

暑假集訓test6

喜聞樂見,test續集。來上題。題目描述 alice 和 bob 有乙個長度為2n的數。現在他們要在這個數字上玩遊戲。他們分別要從 2n 個位中取出 n 個位組成自己的幸運值。每一回合,alice 或 bob 把數字最左邊的那一位拿來放在自己幸運值的最末位。在第 i 輪操作過後,被選取的數字 原數的...

暑假集訓test7

所以我又回來了,這次是test7。test1,test2,test3,集體失蹤,敬請期待 攤手 嗯,喜大普奔。上題。題目描述 給出乙個由數字 0 9 構成的字串。我們說乙個子串行是好的,如果他的每一位都是 1 8 0 7 並且這四個數字按照這種順序出現,且每個數字都出現至少一次 1118888888...