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
sweko's solution for 300: NumberSequence, written in C#, submitted on 09.05.2010 12:32:48
using System; using System.Collections.Generic; using System.Text; class NumberSequence { public int findDigit (int N) { int currentLength = 0; int prevLength = 0; int index = 0; while (currentLength < N) { index ++; prevLength = currentLength; currentLength += length(index); } int offset = N - prevLength; for (int i = 1; i <= index; i++) { int c = numCifri(i); offset -= c; if (offset <=0) { int seckati = i; //offset += c; for (int j = 0; j < -offset; j++) { seckati /=10; } seckati = seckati % 10; return seckati; } } return 1; } public int numCifri (int num) { int result = 0; while (num>0) { result ++; num /=10; } return result; } public int length(int num) { int result = 0; int size = 1; while (true) { if (num < TenN(size)) { result += size * (num +1 - TenN(size-1)); return result; } result += size * 9 * TenN(size -1); size ++; } } public int TenN (int exp) { int result = 1; for (int i = 0; i < exp; i++) { result *= 10; } return result; } }