Register
|
Login
Home
News
Competitions
Practice
How to
Rankings
Calendar
Arena
CodeFu 2010
CodeFu'10 Highlights
Jazoon'10 Highlights
Schedule
Rules
Prizes
Results
Competitions
»
Main CodeFu Competitons
»
CodeFu 2010
»
Results
CodeFu 2010 Results
Final Round Results
bPop's solution for 300: NumberSequence, written in Java, submitted on 09.05.2010 12:10:21
import java.util.Date; import java.util.LinkedList; import java.util.List; public class NumberSequence { /** * @param args */ public int findDigit(int N){ long sum = 0; int step = 1; int count = 0; int prev = 1; int a = 9*(int)Math.pow(10, count); int j = 1; int all = 0; long l = new Date().getTime(); while(true){ //System.out.println("*" + prev); sum += prev; prev += step; j++; all++; if(j == a){ j = 0; count++; //System.out.println("count " + count); step++; a = 9*(int)Math.pow(10, count); } if(sum >= N) break; } int offset = (int)(sum-N); //System.out.println(all); //System.out.println(offset); //System.out.println(sum); StringBuffer rez = new StringBuffer(); for (int k = 1; k <= all; k++) { rez.append(k + ""); } l -= new Date().getTime(); //System.out.println(-l); //System.out.println(rez); //System.out.println(rez.charAt(rez.length()-1)); return (int)(rez.charAt(rez.length()-1-offset)-'0'); } public static void main(String[] args) { System.out.println(new NumberSequence().findDigit(1000000)); } }