【問題描述】
在所有的n位數中,有多少個數中有偶數個數字3?由於結果可能很大,你只需要輸出這個答案對12345取餘的值。
【輸入格式】
讀入乙個數n
【輸出格式】
輸出有多少個數中有偶數個數字3。
【輸入樣例】
2 【輸出樣例】
73 【資料規模】
1≤n≤1000
【樣例說明】
在所有的2位數字,包含0個3的數有72個,包含2個3的數有1個,共73個。
【演算法分析】
遞推考慮這種題目,一般來說都是從第i-1位推導第i位,且當前位是取偶數還是取奇數的。
可以用f[i][0]表示前i位取偶數個3有幾種情況,f[i][1]表示前i位取奇數個3有幾種情況。
則狀態轉換方程可以表示為:
f[i][0] = f[i-1][0] * 9 + f[i-1][1] * 1// 前i位有偶數個3的數字的個數,等於 前i-1位有偶數個3的數字的個數(f[i-1][0])乘以第i位有1個3的數字的個數(0-9中除了3之外的數字,共9種情況) 加上 前i-1位有奇數個3的數字的個數(f[i-1][1])乘以第i位有1個3的數字的個數(只能取3,共1種情況)
f[i][1] = f[i-1][0] * 1 + f[i-1][1] * 9
#include
#include
using
namespace std;
intmain()
else
cout << f[n][0
]<< endl;
}return0;
}
問題 尋找三位數
演算法提高 尋找三位數 時間限制 1.0s 記憶體限制 512.0mb 問題描述 將1,2,9共9個數分成三組,分別組成三個三位數,且使這三個三位數構成 1 2 3的比例,試求出所有滿足條件的三個三位數。例如 三個三位數192,384,576滿足以上條件。輸入格式 無輸入檔案 輸出格式 輸出每行有三...
反轉32 位數
筆試的時候遇見一道這樣的題目,不會做.回來趕緊上網找.感覺牛人就是牛人.這樣的演算法我為啥就是想不出來呢 把乙個32位的數按位反轉,就是第32位轉到第1位,第31位轉到第2位 什麼樣的演算法最節省效率?參考http www.yuanma.org data 2007 0723 article 2763...
36位數相加
源 1 package e08 public class bigint publicbigint string s publicint getbig publicbigint add bigint bi for inti big.length b.length i 0 i c i big i ret...