一、先畫狀態轉換表。
二、根據狀態轉換表,**實現如下:
#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型別的範圍,由於我們只關心個位的數...