P1045 NOIP2003 普及組 麥森數

2022-09-19 16:18:14 字數 989 閱讀 8223

// problem: p1045 [noip2003 普及組] 麥森數

// contest: luogu

// url:

// memory limit: 125 mb

// time limit: 1000 ms

// user: pannnn

#include using namespace std;

/* 2^p與2^p-1有相同的位數,2的次方滿足了最後一位不為0的要求,所以減1後位數不會改變。

令k = 2^p,由於10^n的位數為n+1,將k改寫為以10為底的數。

10^(log(10)2) = 2

k = ( 10 ^ (log(10)2) ) ^ p

位數就是log(10)2 * p + 1

在算乘法時,不能完全告警,資料太長會超時

*/vectoradd(vectora, vectorb)

if (i < b.size())

res.push_back(pre % 10);

pre /= 10;

}if (pre)

return res;

}vectormulbyint(vectora, int b, int i)

while (pre)

return res;

}vectormul(vectora, vectorb)

return res;

}vectorgetvalue(int p)

tmp = mul(tmp, tmp);

tmp.resize(500);

res.resize(500);

p >>= 1;

}return res;

}vectorsubbyone(vectora) else

}return a;

}int main()

}return 0;

}

P1045 NOIP2003 普及組 麥森數

p1045 noip2003 普及組 麥森數 直接純模擬,然後想辦法優化 一般來說高精度原理,是把讓陣列的每一位表示數的位數,所以只要第一位大於10,就直接進製 如果每一次都這樣進製的話,那麼時間的開銷會很大 那麼就可以考慮當第乙個數為10位數時再進製 這樣會大大減少時間 注意細節 include ...

P1042 NOIP2003 普及組 桌球

華華通過以下方式進行分析,首先將比賽每個球的勝負列成一張表,然後分別計算在1111分制和2121分制下,雙方的比賽結果 截至記錄末尾 比如現在有這麼乙份記錄,其中w表示華華獲得一分,l表示華華對手獲得一分 wwwwwwwwwwwwwwwwwwwwwwlw在1111分制下,此時比賽的結果是華華第一局1...

P1044 NOIP2003 普及組 棧

棧是計算機中經典的資料結構,簡單的說,棧就是限制在一端進行插入刪除操作的線性表。棧有兩種最重要的操作,即 pop 從棧頂彈出乙個元素 和 push 將乙個元素進棧 棧的重要性不言自明,任何一門資料結構的課程都會介紹棧。寧寧同學在複習棧的基本概念時,想到了乙個書上沒有講過的問題,而他自己無法給出答案,...