時間限制: 1000 ms 記憶體限制: 524288 kb
題目描述
原題來自:scoi 2009
windy 定義了一種 windy 數:不含前導零且相鄰兩個數字之差至少為 2 的正整數被稱為 windy 數。
windy 想知道,在 a 和 b 之間,包括 a和 b,總共有多少個 windy 數?
輸入格式
一行兩個數,分別為 a,b。
輸出格式
輸出乙個整數,表示答案。
樣例樣例輸入 1
1 10
樣例輸出 1
9
樣例輸入 2
25 50
樣例輸出 2
20
資料範圍與提示
20% 的資料,滿足 1≤a≤b≤10^6;
100% 的資料,滿足 1≤a≤b≤2×10^9。
sol:windy數,也是很友好的數字dp,也像數字遊戲一樣搞一搞,dp[i][j][bo1][bo2]第i位,填的數字為j,是否是上界,是否是前導0就over了
#include usingview codenamespace
std;
int num[20],dp[20][10][2][2
];inline
int dfs(int weiz,int shuz,bool shangj,bool
qiand0)
return
dp[weiz][shuz][shangj][qiand0];
}inline
int solve(int
n)
int i,ans=0
; ans+=dfs(*num,0,0,1
);//
printf("beg ans=%d\n",ans);
for(i=1;i)
ans+=dfs(*num,num[*num],1,0
);
return
ans;
}int
main()
/*input
1 10
output
9input
25 50
output
20*/
一本通 1633 例 3 Sumdiv
今天早上考試考了這道題 題意 求 a 所有約數之和 9901的結果。思路 暴力 快速冪 線性判約數再求和,30分。正解 看到求約數之和,很自然想到唯一分解定理,對於正整數n,n a 1a 2 dots a n 而言,它的約數之和為 1 a 1 a 1 2 dots a 1 1 a 2 a 22 do...
10020 一本通 1 3 例 3 小木棍
題目描述 原題來自 cerc 1995 喬治有一些同樣長的小木棍,他把這些木棍隨意砍成幾段,直到每段的長都不超過 50 現在,他想把小木棍拼接成原來的樣子,但是卻忘記了自己開始時有多少根木棍和它們的長度。給出每段小木棍的長度,程式設計幫他找出原始木棍的最小可能長度。輸入格式 第一行為乙個單獨的整數 ...
一本通 1 2 例 3 曲線
題目link 經典的三分裸題。三分主要是用來求乙個滿足單峰性的函式的最大 最小值的一種演算法,其原理和二分基本一樣。假設求最小值,首先把選擇區域分為三段,然後比較這兩個三等分點的函式值誰更小一些,大的那一邊就不要了 如果大的是靠左的,那就連著左邊不要了,靠右同理 容易證明這樣做是正確的,然後像二分那...