二進位制數 被5整除 自動機 DFA

2021-09-03 02:57:04 字數 1158 閱讀 4528

一、先畫狀態轉換表。

二、根據狀態轉換表,**實現如下:

#include#includeint main()

, ,,,

},condition, state = 0;

char binarystring[200];

/*輸入時可以選擇下面幾個測試資料:

abc(不是二進位制), 123(不是二進位制), 101(十進位制5), 110(十進位制6)

*/scanf("%s", binarystring); //輸入字串

int binarystringlength = strlen(binarystring); //求字串長度

for(int i = 0; i < binarystringlength; i++)

state = stateset[state][condition]; //轉換後的狀態

}if(state == 0)

printf("\nthe binary string is divisible by 5.\n");

else if(state == -1)

printf("\nthe string is not binary.\n");

else

printf("\nthe binary string isn't divisible by 5, and the remainder is %d.\n", state);

return 0;

}

三、結果。當輸入101時,結果如下:

當輸入110時,結果如下:

當輸入123時,結果如下:

可被 5 整除的二進位制字首

1018.可被 5 整除的二進位制字首 給定由若干0和1組成的陣列a。我們定義n i 從a 0 到a i 的第i個子陣列被解釋為乙個二進位制數 從最高有效位到最低有效位 返回布林值列表answer,只有當n i可以被5整除時,答案answer i 為true,否則為false。示例 1 輸入 0,1...

可被 5 整除的二進位制字首

給定由若干 0 和 1 組成的陣列 a。我們定義 n i 從 a 0 到 a i 的第 i 個子陣列被解釋為乙個二進位制數 從最高有效位到最低有效位 返回布林值列表 answer,只有當 n i 可以被 5 整除時,答案 answer i 為 true,否則為 false。示例 1 輸入 0,1,1...

1018 可被 5 整除的二進位制字首

解題思路 1.可被 5 整除的數個位必然是0或5,所以,我們實際上可以不用關心,各位累加後的結果,我們關心的只是個位 2.原陣列的第i個子陣列組成的十進位制數字的計算方法是 sum 1 a i 其中sum的初始值為0,這樣計算得到的sum實際上超出了int和long型別的範圍,由於我們只關心個位的數...