時間限制:
1000 ms | 記憶體限制:
65535 kb
難度:1 描述
最近topcoder的xd遇到了乙個難題,倘若乙個數的三次方的後三位是111,他把這樣的數稱為小光棍數。他已經知道了第乙個小光棍數是471,471的三次方是104487111,現在他想知道第m(m<=10000000000)個小光棍數是多少?
輸入有多組測試資料。第一行乙個整數n,表示有n組測試資料。接下來的每行有乙個整數m。
輸出輸出第m個小光棍數。
樣例輸入
11
樣例輸出
471
思路:第乙個是471.
後三位是111,只能n的末尾為471;
證明:假設之後的數為m,有m=k+471;
m^3=(k^3+k(3*471^2)+k^2(3*471)+471^3);
其中471^3為***111.
則必有k^3+k(3*471^2)+k^2(3*471)=1000*p;
合併即為k*(k^2+3*471^2+k*3*471)=1000p
1.若k能被1000整除,滿足題意
2.若k不能被1000整除,則k^2+3*471^2+k*3*471能被1000整除,假設k=t+x,其中t能被1000整除,x不能被1000整除,帶入根據整除關係可化簡為
x^2+3*471x+3*471^2能被1000整除,因為3*471^2=665523,可知x^2+3*471x的結果中末尾為477(k+477 k能被1000整除)才能滿足題意。
假設結果為p+477,即可化簡為:x^2+(157x-53)*9=k;
把x分個位數是0~9討論,結果均得不出為0,即k不能被1000整除。矛盾而否定了假設2.
於是k能被1000整除。所以第乙個數字471,以後的數為1000*i+471;
#includeint main()
return 0;
}
NYOJ 458 小光棍數
描述 最近topcoder的xd遇到了乙個難題,倘若乙個數的三次方的後三位是111,他把這樣的數稱為小光棍數。他已經知道了第乙個小光棍數是471,471的三次方是104487111,現在他想知道第m m 10000000000 個小光棍數是多少?輸入有多組測試資料。第一行乙個整數n,表示有n組測試資...
nyoj 458 小光棍數
時間限制 1000 ms 記憶體限制 65535 kb 難度 1 描述 最近topcoder的xd遇到了乙個難題,倘若乙個數的三次方的後三位是111,他把這樣的數稱為小光棍數。他已經知道了第乙個小光棍數是471,471的三次方是104487111,現在他想知道第m m 10000000000 個小光...
nyoj 458 小光棍數
時間限制 1000 ms 記憶體限制 65535 kb 難度 1 描述 最近topcoder的xd遇到了乙個難題,倘若乙個數的三次方的後三位是111,他把這樣的數稱為小光棍數。他已經知道了第乙個小光棍數是471,471的三次方是104487111,現在他想知道第m m 10000000000 個小光...