HDU 1597 二分 數學

2021-07-26 08:58:25 字數 945 閱讀 6050

題目鏈結

思路:不知道為什麼我的搜尋專題出現了這道題......好像是可以折半搜尋,但感覺複雜度很高,觀察了一下:

第乙個數:1位

第二個數:2位

......

第n個數:n位

那如果連起來,連線完第n個數,這個數的位數為:

1 + 2 + 3 + 4 ......+n

這不正是等差數列求和嗎?

然後我用下面的**簡單測了一下。

#include using namespace std;

int main()

cout << ans << endl;

long long k = 1;

while(k*(k+1)/2 <= ans)

printf("k = %d\n",k);

return 0;

}

發現哪怕是2^31多位,也不過是65000左右的等差數列求和,那麼下面就很簡單了。

我先開乙個65000左右大小的陣列,預處理a[i] = i*(i+1)/2。對於每乙個給定的位數k放進a陣列裡面二分搜尋,找到下限pos,用k-(pos)*(pos+1)/2,剩下的就是從1開始的屬於最後乙個數的乙個數串,然後對9取餘即可,若取余為0,則說明剛好剩下9個數(或9的倍數),那麼輸出9,否則直接輸出即可。

1a**:

#include using namespace std;

const int maxn = 65550;

long long a[maxn];

void init(void)

long long ans = n - (pos*(pos+1)/2);

ans %= 9;

if(ans == 0)

else

} return 0;

}

HDU 6209 二分分數

題目鏈結 思路 簡單轉化之後,此題就是給你乙個小數,叫你輸出值最接近的分數,劃成最簡形式。考慮二分分數。若不知道起始範圍,則可以從 01 10 oo frac frac oo 10 01 o o 進行二分。出於效率和最簡分數的考慮,我們每次二分的值不是求端點的平均數。比如對於 ab cd frac,...

(紀中) 二分 數學 物理實驗

file io input atom.in output atom.out 時間限制 1000 ms 空間限制 262144 kb 具體限制 題目描述 小l目前正在他的實驗室裡研究高能粒子。他發現了一種神奇的粒子,小l稱其為l粒子。l粒子擁有著n nn個價位,第i個價位對應儲存著大小為aiai ai...

hdu 2899 數學基礎 二分

題意 給了你乙個函式,然後給了你x的變化範圍0到100,讓你求出函式的最小值。分析 它讓你求的是函式的最小值,所以我們可以先對函式求導,得到的導數就可以判斷函式的單調性了,求出導數後,我們發現如果函式的導數是x越大所求的的導數也就越大,當導數一直為負數時,函式是單調遞減的 當導數開始是負數,然後是正...