包含 A 個 1,B 個 10 和 C 個 0 的字串中,每個 1 的“10”子序列之和的計數
本文旨在實現一個程式,用於獲取包含 A 個 1,B 個 10 和 C 個 0 的字串中,每個 1 的“10”子序列之和的計數。
示例
Let us take the Input: A = 1, B = 2, C = 3 Output obtained here is : 14
解釋
A = 1 表示有一個“1”字串,B = 2 表示有一對“10”字串,C = 3 表示有一組三個“0”字串。
連線後得到的字串為“11010000”。
因此,對於第一個“1”,有五個“10”子序列是可能的;對於第二個“1”,有五個“10”子序列是可能的;對於第三個“1”,有四個“10”子序列是可能的。
因此,總共有 5 + 5 + 4 = 14 個可能的序列。
示例
Let us take the Input: A = 2, B = 1, C =0 Output obtained here is: 3
解釋
A = 2 表示有兩個“1”字串,B = 1 表示有一個“10”字串,C = 0 表示沒有“0”字串。
連線後得到的字串為“1110”。
因此,可能的潛在子序列 = 3。
示例
Let us take the Input: A = 4, B = 1, C =1 Output obtained here is : 10
解釋
A = 4 表示有四個“1”字串,B = 1 表示有一個“10”字串,C = 1 表示有一個“0”字串。
連線後得到的字串為“1111100”。
因此,可能的潛在子序列 = 10。
示例
Let us take the Input: A = 0, B = 2, C =3 Output obtained here is: 9
解釋
A = 0 表示沒有“1”字串,B = 2 表示有一對“10”字串,C = 3 表示有三個“0”字串。
連線後得到的字串為“1010000”。
因此,可能的潛在子序列 = 9。
問題陳述
實現一個程式,用於獲取包含 A 個 1,B 個 10 和 C 個 0 的字串中,每個 1 的“10”子序列之和的計數。
方法
將所有“1”附加到最終字串的開頭,並將所有“0”附加到最終字串的末尾,以獲得最大子序列。
宣告一個名為 res 的變數,然後將 A 乘以“1”和 B 乘以“10”來儲存潛在“10”子序列的計數。
透過將 (A*B)*C 乘以“0”以及 A 和 B 乘以“1”,新增至少包含“10”個子序列的計數結果。
返回結果的模。
演算法
下面給出獲取包含 A 個 1,B 個 10 和 C 個 0 的字串中,每個 1 的“10”子序列之和的計數的演算法:
步驟 1 - 定義一個函式來獲取和的計數。
步驟 2 - 因為結果可能非常大,所以計算其模 109 + 7。
步驟 3 - 使用以下公式計算可能的子序列:res = (A * 1ll * B) % mod + ((B * 1ll * (B + 1)) / 2) % mod;
步驟 4 - 檢查 res 是否大於或等於 mod,如果是,則從 res 中減去 mod。
步驟 5 - 使用以下公式計算可能的子序列:res += ((A + B) * 1ll * C) % mod;
步驟 6 - 再次檢查 res 是否大於或等於 mod,如果是,則從 res 中減去 mod。
步驟 7 - 列印輸出。
示例(C 程式)
這是上述演算法的 C 程式實現,用於獲取包含 A 個 1,B 個 10 和 C 個 0 的字串中,每個 1 的“10”子序列之和的計數。
#include <stdio.h>
long long maximumSubSeq(int A, int B, int C) {
long long mod = 1000000007;
long long res = (A * 1ll * B) % mod + ((B * 1ll * (B + 1)) / 2) % mod;
if (res >= mod) {
res -= mod;
}
res += ((A + B) * 1ll * C) % mod;
if (res >= mod) {
res -= mod;
}
return res;
}
int main(){
int A = 2, B = 1, C = 0;
printf("%lld
", maximumSubSeq(A, B, C));
return 0;
}
輸出
執行後,將生成以下輸出:
3
結論
同樣,我們可以獲取包含 A 個 1,B 個 10 和 C 個 0 的字串中,每個 1 的“10”子序列之和的計數。本文解決了獲取包含 A 個 1,B 個 10 和 C 個 0 的字串中,每個 1 的“10”子序列之和的計數的程式的挑戰。
這裡提供了 C 程式設計程式碼以及獲取包含 A 個 1,B 個 10 和 C 個 0 的字串中,每個 1 的“10”子序列之和的計數的程式的演算法和方法。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP