周賽 一道簽到題(kmp)

2021-07-04 11:09:06 字數 1002 閱讀 2644

問題 a: 一道簽到題

時間限制: 2 sec  記憶體限制: 128 mb

提交: 61  解決: 26

[提交][狀態][討論版]

題目描述

我想說這是一道簽到題,意思就是本次測試中最水的一道,不過我這樣說你真的願意相信我嗎?哈哈,題目是這樣的給你一下小數,然後請告訴我分別告訴我這個小數的迴圈節的迴圈次數、迴圈節以及迴圈節長度

輸入輸入包括多組測試資料每組測試資料1行,包括乙個小數,小數的長度不超過200,小數大於0小於100

輸出分別輸出這個小數的迴圈節的長度、迴圈節以及迴圈次數,中間以乙個空格間隔

樣例輸入

8.6987698769876987

0.666

5.1樣例輸出

4 6987 4

1 6 3

1 1 1

//hpuoj-周賽一:一道簽到題

//題目大意:給你一列數字(浮點型)找出這列數中小數部分的迴圈節的迴圈次數、

//迴圈節以及迴圈節長度.

//解題思路:首先,定義兩個字元陣列a[220]、b[220],這列數當成字元型處理;

//由於只考慮小數部分,所以輸入到 a陣列之後直接把小數部分存到 b陣列裡。

// 接下來就用到kmp思想啦,定義getp()函式,用getp函式處理陣列b.

//本題主要利用getp()函式的性質:

//[1]若 len%(len-p[len])等於0,那麼這列字串一定是週期串(就像迴圈小數)

//[2]並且它的迴圈節的長度是 len-p[len],迴圈的次數是 len/(len-p[len]);

//len:getp函式要處理的字串的長度。

#include#includechar a[220],b[220];

int p[100];

int len1,len2,length,cnt=0,k;

void getp(){

int i=0,j=-1;

p[i]=j;

while(i

hpuoj1695 一道簽到題 KMP

時間限制 2 sec 記憶體限制 128 mb 提交 69 解決 33 提交 狀態 討論版 我想說這是一道簽到題,意思就是本次測試中最水的一道,不過我這樣說你真的願意相信我嗎?哈哈,題目是這樣的給你一下小數,然後請告訴我分別告訴我這個小數的迴圈節的迴圈次數 迴圈節以及迴圈節長度 輸入包括多組測試資料...

hpuoj 1695 一道簽到題 KMP

時間限制 2 sec 記憶體限制 128 mb 提交 72 解決 36 提交 狀態 討論版 我想說這是一道簽到題,意思就是本次測試中最水的一道,不過我這樣說你真的願意相信我嗎?哈哈,題目是這樣的給你一下小數,然後請告訴我分別告訴我這個小數的迴圈節的迴圈次數 迴圈節以及迴圈節長度 輸入包括多組測試資料...

hpu1695 一道簽到題

a 時間限制 2 sec 記憶體限制 128 mb 提交 63 解決 28 提交 狀態 討論版 我想說這是一道簽到題,意思就是本次測試中最水的一道,不過我這樣說你真的願意相信我嗎?哈哈,題目是這樣的給你一下小數,然後請告訴我分別告訴我這個小數的迴圈節的迴圈次數 迴圈節以及迴圈節長度 輸入包括多組測試...