描述:最近Topcoder的XD遇到了一個難題,假若一個數的三次方的後三位是111,他把這樣的數稱爲小光棍數。他已經知道了第一個小光棍數是471,471的三次方是104487111,如今他想知道第m(m<=10000000000)個小光棍數是多少?java
輸入:有多組測試數據。第一行一個整數n,表示有n組測試數據。接下來的每行有一個整數m測試
輸出:輸出第m個小光棍數。spa
輸入數據:
code
1
輸出數據:orm
471
/***************************************************************************/
ci
import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); int s = sc.nextInt(); for(int i=0;i<s;i++){ Long ge = sc.nextLong(); if(ge.toString().equals("1")){ System.out.println("471"); continue; } System.out.println((ge - 1)+"471"); } } }
2333 這道題我表示很蛋疼.第一眼看過去的想法:"嗯,這題用遍歷一個個的判斷就行"..結果超時..it
而後再改進,將計算出來的值放到容器裏存起來,若是輸入的數字小於容器的長度,就直接從容器裏面取好了class
若是數字大於容器的長度,那就從容器取最後一個.繼續往下計算..心想這樣應該能夠了吧. = =結果仍是超時..import
而後我在本地試了一下..感受速度還能夠啊.. 隨手輸入了幾個數字.. 1 2 3 4 5 6 ...好吧..我無語了容器
顯示出來的數字全都是 471...... 只不過前面的數字不一樣....而後ac了..