迴圈節及週期

2021-07-06 09:53:27 字數 820 閱讀 2774

#include

#include

intmain

()if

(j==i+1

)j=0;}

if(x==

1&&j==0)

}if(k!=n)

printf("

\n");}

return0;

}

求迴圈節和週期的問題已經是第二次或第三次碰到了,但是還是在細節上有點小問題,如果做過的題目不能正確快速的寫完的話,那刷題意義也將減半。

這道題其實就是暴力,應該是簡單暴力,遍歷全部元素,考察已確定長度是否為週期,是否足夠構成迴圈節,應考慮到各種情況。

從這道題中也可以發現一些問題,值得去學習的:

1.不應該使用過於繁瑣的辦法:再開乙個陣列,把選中的迴圈節部分放進去,再將兩個陣列進行比較,重複這種操作,也不應該開乙個變數計數週期。這些都是增加**複雜度,增加程式設計時間,應當注意到其實只需要利用同乙個陣列,開乙個變數j圈進s中開頭的長度作為迴圈節長度(其實差1)迴圈內讓後面的部分與已圈進的部分進行遍歷,看是否構成迴圈,即有無不同項存在,如果是迴圈成立的話,迴圈節與後面部分應構成重複相等,而不會執行到else中跳出遍歷,但多數情況總會執行else,注意j每次大於i後就需要歸0,從頭在此迴圈迴圈節。

2.注意特例:abababa(此時迴圈節未判斷出錯,但迴圈節並未執行完,迴圈是不完整的,即j!=0,若迴圈節我是完整的,則我迴圈節應該是判斷完,歸為0的),abcabcabcabf,aabcfaaabcfa(這種出現了不能把迴圈節直接跳到出錯位置的情況,若直接跳到出錯位置,此時迴圈節會在擴大為aabcf後直接擴充套件到aabcfaaa迴圈節就錯了,導致所以結果均出錯)

迴圈節長度以及迴圈節

迴圈節長度 兩個整數做除法,有時會產生迴圈小數,其迴圈部分稱為 迴圈節。比如,11 13 6 0.846153846153 其迴圈節為 846153 共有6位。這是一道藍橋杯的題目,試卷上是乙個填空題,思路就是不斷的對除數取餘,然後乘10後再取餘,直到餘數在之前出現過或者為0 結束。為什麼是這樣的呢...

最長迴圈節

1035 最長的迴圈節 基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 正整數k的倒數1 k,寫為10進製的小數如果為無限迴圈小數,則存在乙個迴圈節,求 n的數中,倒數迴圈節長度最長的那個數,假如存在多個最優的答案,輸出所有答案中最大的那個數。1 6 0.1 6 ...

迴圈節長度

兩個整數做除法,有時會產生迴圈小數,其迴圈部分稱為 迴圈節。比如,11 13 6 0.846153846153 其迴圈節為 846153 共有6位。下面的方法,可以求出迴圈節的長度。請仔細閱讀 並填寫劃線部分缺少的 public static int f int n,int m 注意,只能填寫缺少的...