信息学奥赛一本通(1313:【例3.5】位数问题)
1313:【例3.5】位數問題
時間限制: 1000 ms ??? ??? 內存限制: 65536 KB
提交數: 13851 ??? 通過數: 7493
【題目描述】
在所有的N位數中,有多少個數中有偶數個數字3?由于結果可能很大,你只需要輸出這個答案對12345取余的值。
【輸入】
讀入一個數N(N≤1000)。
【輸出】
輸出有多少個數中有偶數個數字3。
【輸入樣例】
2【輸出樣例】
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];f[i][1]=f[i-1][0]+f[i-1][1]*9;邊界條件為:f[1][1]=1;f[1][0]=9。
【參考代碼】
#include <stdio.h>
int main()
{
?? ?int f[1001][2],n,i,x;
?? ?scanf("%d",&n);
?? ?f[1][1]=1;
?? ?f[1][0]=9;
?? ?for(i=2;i<=n;i++)
?? ?{
?? ??? ?x=f[1][0];
?? ??? ?if(i==n)
?? ??? ??? ?x--;
?? ??? ?f[i][0]=(f[i-1][0]*x+f[i-1][1])%12345;
?? ??? ?f[i][1]=(f[i-1][1]*x+f[i-1][0])%12345;
?? ?}
?? ?printf("%d\n",f[n][0]);
?? ?return 0;
}
http://ybt.ssoier.cn:8088/problem_show.php?pid=1313
?
總結
以上是生活随笔為你收集整理的信息学奥赛一本通(1313:【例3.5】位数问题)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信息学奥赛一本通(1405:质数的和与积
- 下一篇: 信息学奥赛一本通 1011:甲流疫情死亡