東大oj1155 等凹函式

2022-08-17 13:42:15 字數 1222 閱讀 5111

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#include

using

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可以為...