problem description
定義一種數字稱為等凹數字,即從高位到低位,每一位的數字先遞減再遞增,且該數是乙個回文數,即從左讀到右與從右讀到左是一樣的,僅形成乙個等凹峰,如543212345,5544334455是合法的等凹數字,543212346,123321不是等凹數字。現在問你[l,r]中有多少等凹數字呢?l,r<=1e18(小於等於2位的無凹峰)
input
第一行乙個整數t,表示有t組資料,t <= 110.
接下來的每行包含兩個用空格分開的整數l r,保證l,r<=1e18.
output
對於每組輸入,在一行輸出乙個整數,代表[l,r]中等凹數字的個數。
sample input
21 100
666 666666
sample output
0356
沒有dfs算不了的問題,如果有,那就用天河一號去dfs(誤)
每次都從l到r迴圈挨個驗證肯定tle,所以用了遞迴去構造回文數,每次嘗試填乙個數字,且要求小於等於上乙個數字,填完之後給他左右對稱過去,這樣就生成了乙個等凹數字,把他丟到答案陣列裡面。
對稱有兩種,比如54322345, 5432345,所以寫了兩個create分別生成這兩種等凹。
有意思的是,從1到1e18,有184574個等凹數。
#include#includeusing
std:: sort;
long
long res[1000000], num = 0
;int temp[20] = ;
void create(int n)//
res[num++] =ans;
}void create2(int
n) res[num++] =ans;
}void dfs(int cur, int n)//
create n down words 1 : n
return
; }
for(int i = 0; i <= 9; i++)
}}void
test()
intmain()
for(int i = num-1; i >= 0; i--)
if(res[i] <=r)
printf(
"%lld\n
", r-l+1
); }
return0;
}
九度oj 1155 雞兔同籠
時間限制 1 秒 記憶體限制 32 兆 特殊判題 否 提交 1976 解決 1334 題目描述 乙個籠子裡面關了雞和兔子 雞有2隻腳,兔子有4隻腳,沒有例外 已經知道了籠子裡面腳的總數a,問籠子裡面至少有多少只動物,至多有多少只動物。輸入 第1行是測試資料的組數n,後面跟著n行輸入。每組測試資料佔1...
東大OJ 最大子串行問題的變形
時間限制 1 sec 記憶體限制 128 mb 提交 224 解決 54 提交 狀態 討論版 給定乙個n個整數組成的序列,整數有正有負,找出兩段不重疊的連續子串行,使得它們中整數的和最大。兩段子序列都可以為空。多組輸入,每組第一行為n,表示序列的長度 第二行為n個整數 1000 n 1000 表示輸...
東大OJ 1051 旅行家的預算
時間限制 1 sec 記憶體限制 128 mb 提交 27 解決 7 提交 狀態 討論版 乙個旅行家想駕駛汽車以最少的費用從乙個城市到另乙個城市 假設出發時油箱是空的 給定兩個城市之間的距離d1 汽車油箱的容量c 以公升為單位 每公升汽油能行駛的距離d2 出發點每公升汽油 p和沿途油站數n n可以為...