日常訓練 yayamao的神題

2022-05-31 04:24:10 字數 2008 閱讀 6310

\(yayamao\)是數學神犇,一天他在紙上計算起了\(1/p\), 我們知道按照模擬除法可以得到準確解,例如\(1/7=0.(142857),1/10=0.1(0)\)。\(yayamao\)發現無論他如何模擬小數都會出現迴圈,現在\(yayamao\)想知道迴圈的長度以及迴圈出現之前,小數點後面的未迴圈的數字的位數。例如\(1/15=0.0(6)\),那麼它的迴圈長度為\(1\),小數點後面的未迴圈的數字的位數為\(1\);\(1/4=0.25(0)\),那麼它的迴圈長度為\(1\),小數點後面的未迴圈的數字的位數為\(2\)。

資料的第一行是乙個整數\(t\), 表示資料組數。

接下來\(t\)組資料,每組資料的第一行是乙個正整數\(p\)。

對於每組資料輸出\(2\)個整數\(a,b\), 分別表示迴圈長度以及小數點後面的未迴圈的數字的位數。

312

4

1 0

1 11 2

\(1\;\leq\;t\;\leq\;10000,1\;\leq\;p\;\leq\;2\;\times\;10^9\).

小學奧數中,乙個分數如果是純迴圈小數,則它的分母是\(k=999...9\)的因數(\(k\)為最小的這種形式的原分母的倍數),迴圈節為\(k\)的位數;

若是混迴圈小數,則它的分母是\(k=999...9000...0\)的因數(\(k\)為最小的這種形式的原分母的倍數),迴圈節為\(k\)中\(9\)的個數,小數點後不迴圈部分的位數為\(k\)中\(0\)的個數.

由此可見,設\(p=2^5^p'((p',10)=1)\),則迴圈部分的位數為\(max(a_1,a_2)\).

現在求迴圈節長度.

設\(a_i\)表示\(p'\)小數點後\(i\)位上的數,\(b_i\)表示處理第\(i-1\)位後的餘數.

顯然,\(b_1=1,a_1=\lfloor10\;\times\;\frac\rfloor\),

\(b_i=10\;\times\;b_\;mod\;p',a_i=\lfloor10\;\times\;\frac\rfloor\).

當找到最小的\(p,q(p滿足\(b_p=b_q\)時,答案為\(q-p\).

因為\((p',10)=1\),所以\((p',b_i)=1\).

設\(10x\;\equiv\;1(mod\;p')\),若\(p\not=1\),則\(b_=x\;\times\;b_p\;mod\;p'=x\;\times\;b_q\;mod\;p'=b_\).

出現了更早的重複\(b_=b_\),所以最早的重複在\(p=1\),所以\(\frac\)為純迴圈小數.

設\(y\)為最小的滿足\(b_y=b_1\;\times\;10^\;mod\;p'=b_1\)的正整數,則\(10^\;\equiv\;1(mod\;p')\).

問題轉化成了求\(10\)模\(p'\)的階.

因為\((10,p')=1\),所以\(10^\;\equiv\;1(mod\;p')\).

列舉\(\phi(p')\)的質因數找最小質因數解即可.

#include#include#include#include#include#include#include#include#include#include#define n 45000

using namespace std;

typedef long long ll;

ll m[n];

int f[n],p[n],k,n,x,t,cnt,tot;

bool b[n];

inline void prime()

inline void aireen()

while(!(k%5))

x=phi(k);

for(int i=1;im[i]=m[i-1]*10ll%(ll)(k);

for(int i=sqrt(x);i;--i)

if(!(x%i))

printf("%d %d\n",x,max(cnt,tot));

}}int main()

日常訓練 CZA的蛋糕

cza特別喜歡吃海苔,怎麼吃也吃不夠。cza的生日到來時,他的父母給他買了許許多多的海苔和乙個生日蛋糕。海苔是乙個1 2或2 1的長方形,而蛋糕則是乙個n m的矩陣。蛋糕上有一些蠟燭佔據了位置,其他地方都可以放海苔。cza的父母讓cza把海苔盡可能多的放在蛋糕上,但是海苔不能夠重疊放置。cza想把海...

模擬7 27 單(liu runda學長的神題)

好像用到一些高中數學知識.滿分做法 case 0 已知a陣列求b陣列 因為是樹狀結構,設當前節點x 兒子to 我們從任意一點出發可求出b root 來,之後我們可以通過尋找兩兩相連節點的關係來o n 推出全部的b 我們發現x與y之間只有一條邊的貢獻不同,就是他們相連的邊 邊的貢獻即該邊節點所在子樹通...

js邏輯訓練題 智商測試題訓練題 提公升智商的神器

第乙個是目前最為通用的測試題,先大家練練手。因為這套題普及率高,如你已經做過了,可以試試門薩的1 3套題,相對來說難度高一點點.再往後面就是聯絡測試題了,可以反覆操作,知道你熟練掌握為止。智商測試 邏輯思維能力應該包括觀察力 分析力 判斷力 決策力 思考力 創意力 想象力 洞察力這八種細分能力。邏輯...