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
acker's solution for 300: NumberSequence, written in Java, submitted on 09.05.2010 13:49:39
public class NumberSequence { public int findDigit(int N) { int[] veca=new int[]{0,9,189,1989,19989000}; int[] vec=new int[]{0,9,180,2700,36000,450000,5400000,63000000,720000000,900000000}; int M=N; int k=1; int p=1; int mm=0; while(M>0){ mm=M; int min=(p-(int)Math.pow(10, k-1)+1)*(k)+veca[k-1]; if(p<10)min=p; M-=min; p++; int pp=p; int ppnr=0; while(pp>0){ pp/=10; ppnr++; } k=ppnr; } M+=p-1; N=mm; int i=1; int j=0; while(N-vec[j+1]>0){ N-=vec[j+1]; j++; i++; } N--; if(N>=1000000)N--; int mod=N%i; //if(p>100) N=N/i; int number=(int)Math.pow(10, i-1)+N; String s=Integer.toString(number); return Integer.parseInt(s.substring(mod, mod+1)); } }