/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
static final double xPrecision = 10.0; // (1/xPrecision) is the precision on x-values
static final double yPrecision = 10.0; // (1/yPrecision) is the precision on y-values
static final int PI = (int) (3.1415 * xPrecision);
static final int TPI = 2 * PI; // twice PI
static final int HPI = PI / 2; // half PI
public static void main
(String[] args
) { double xd;
int[] row = new int[100];
int r = 0;
int maxc = 0;
for(int start = (int) (1 * yPrecision), y = start; y >= -start; y--){
double x0
= Math.
asin(y
/ yPrecision
),
x1 = bringXValueWithinPrecision(x0),
x2 = bringXValueWithinPrecision(x0 + TPI / xPrecision),
x3 = bringXValueWithinPrecision(PI/xPrecision - x0);
int c = 0;
for(int x = 0; x <= TPI; x++, c++){
xd = (x / xPrecision);
if(x1 == xd || x2 == xd || x3 == xd)
row[c] = r;
}
maxc
= Math.
max(c, maxc
); r++;
}
int[] digit = new int[100];
int current = 0;
for (int i = 0 ; i != maxc ; i++) {
if (row[i] != -1) {
digit[i] = (current++) % 10;
}
}
for (int i = 0 ; i != r ; i++) {
for (int c = 0 ; c != maxc ; c++) {
if (row[c] == i) {
} else {
}
}
}
}
public static double bringXValueWithinPrecision(double num){
// obviously num has 16 floating points
// we need to get num within our precision
return Math.
round(num
* xPrecision
) / xPrecision
; }
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKICBzdGF0aWMgZmluYWwgZG91YmxlIHhQcmVjaXNpb24gPSAxMC4wOyAvLyAoMS94UHJlY2lzaW9uKSBpcyB0aGUgcHJlY2lzaW9uIG9uIHgtdmFsdWVzCiAgc3RhdGljIGZpbmFsIGRvdWJsZSB5UHJlY2lzaW9uID0gMTAuMDsgLy8gKDEveVByZWNpc2lvbikgaXMgdGhlIHByZWNpc2lvbiBvbiB5LXZhbHVlcwogIHN0YXRpYyBmaW5hbCBpbnQgUEkgPSAoaW50KSAoMy4xNDE1ICogeFByZWNpc2lvbik7CiAgc3RhdGljIGZpbmFsIGludCBUUEkgPSAyICogUEk7IC8vIHR3aWNlIFBJCiAgc3RhdGljIGZpbmFsIGludCBIUEkgPSBQSSAvIDI7IC8vIGhhbGYgUEkKCiAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgZG91YmxlIHhkOwogICAgaW50W10gcm93ID0gbmV3IGludFsxMDBdOwogICAgQXJyYXlzLmZpbGwocm93LCAtMSk7CiAgICBpbnQgciA9IDA7CiAgICBpbnQgbWF4YyA9IDA7CiAgICBmb3IoaW50IHN0YXJ0ID0gKGludCkgKDEgKiB5UHJlY2lzaW9uKSwgeSA9IHN0YXJ0OyB5ID49IC1zdGFydDsgeS0tKXsgICAgICAgCiAgICAgIGRvdWJsZSB4MCA9IE1hdGguYXNpbih5IC8geVByZWNpc2lvbiksCiAgICAgICAgICAgIHgxID0gYnJpbmdYVmFsdWVXaXRoaW5QcmVjaXNpb24oeDApLAogICAgICAgICAgICB4MiA9IGJyaW5nWFZhbHVlV2l0aGluUHJlY2lzaW9uKHgwICsgVFBJIC8geFByZWNpc2lvbiksCiAgICAgICAgICAgIHgzID0gYnJpbmdYVmFsdWVXaXRoaW5QcmVjaXNpb24oUEkveFByZWNpc2lvbiAtIHgwKTsKICAgICAgaW50IGMgPSAwOwogICAgICBmb3IoaW50IHggPSAwOyB4IDw9IFRQSTsgeCsrLCBjKyspewogICAgICAgIHhkID0gKHggLyB4UHJlY2lzaW9uKTsKCiAgICAgICAgaWYoeDEgPT0geGQgfHwgeDIgPT0geGQgfHwgeDMgPT0geGQpCiAgICAgICAgICByb3dbY10gPSByOwogICAgICB9CiAgICAgIG1heGMgPSBNYXRoLm1heChjLCBtYXhjKTsKICAgICAgcisrOwogICAgfQogICAgaW50W10gZGlnaXQgPSBuZXcgaW50WzEwMF07CiAgICBpbnQgY3VycmVudCA9IDA7CiAgICBmb3IgKGludCBpID0gMCA7IGkgIT0gbWF4YyA7IGkrKykgewogICAgCWlmIChyb3dbaV0gIT0gLTEpIHsKICAgIAkJZGlnaXRbaV0gPSAoY3VycmVudCsrKSAlIDEwOwogICAgCX0KICAgIH0KICAgIGZvciAoaW50IGkgPSAwIDsgaSAhPSByIDsgaSsrKSB7CiAgICAJZm9yIChpbnQgYyA9IDAgOyBjICE9IG1heGMgOyBjKyspIHsKICAgIAkJaWYgKHJvd1tjXSA9PSBpKSB7CiAgICAJCQlTeXN0ZW0ub3V0LnByaW50KGRpZ2l0W2NdKTsKICAgIAkJfSBlbHNlIHsKICAgIAkJCVN5c3RlbS5vdXQucHJpbnQoJyAnKTsKICAgIAkJfQogICAgCX0KICAgIAlTeXN0ZW0ub3V0LnByaW50bG4oKTsKICAgIH0KICB9CgogIHB1YmxpYyBzdGF0aWMgZG91YmxlIGJyaW5nWFZhbHVlV2l0aGluUHJlY2lzaW9uKGRvdWJsZSBudW0pewogICAgICAvLyBvYnZpb3VzbHkgbnVtIGhhcyAxNiBmbG9hdGluZyBwb2ludHMKICAgICAgLy8gd2UgbmVlZCB0byBnZXQgbnVtIHdpdGhpbiBvdXIgcHJlY2lzaW9uCiAgICAgIHJldHVybiBNYXRoLnJvdW5kKG51bSAqIHhQcmVjaXNpb24pIC8geFByZWNpc2lvbjsKICB9Cn0=