class Main{
String g
(int n,
int depth
){ // Recursive method with 2 int parameters & String return-type int remainder = n % depth; // The current recursive remainder
if(depth < n){ // If we aren't done with the number yet:
int nextDepth = depth * 10; // Go to the next depth (of the power of 10)
int nextN = n - remainder; // Remove the remainder from the input `n`
// Do a recursive call with these next `n` and `depth`
String resultRecursiveCall
= g
(nextN, nextDepth
); if(remainder != 0){ // If the remainder was not 0:
// Append a " + " and this remainder to the result
resultRecursiveCall += " + " + remainder;
}
return resultRecursiveCall; // And return the result
} else{ // Else:
return Integer.
toString(n
); // Simply return input `n` as result }
}
String f
(int n
){ // Second method so we can accept just integer `n` return g(n, 1); // Which will call the recursive call with parameters `n` and 1
}
public static void main
(String[] a
){ Main m = new Main();
m.test(9);
m.test(10);
m.test(12);
m.test(101);
m.test(123);
m.test(1024);
m.test(70304);
}
void test(int input){
}
}
Y2xhc3MgTWFpbnsKICBTdHJpbmcgZyhpbnQgbiwgaW50IGRlcHRoKXsgICAgIC8vIFJlY3Vyc2l2ZSBtZXRob2Qgd2l0aCAyIGludCBwYXJhbWV0ZXJzICYgU3RyaW5nIHJldHVybi10eXBlCiAgICBpbnQgcmVtYWluZGVyID0gbiAlIGRlcHRoOyAgICAvLyAgVGhlIGN1cnJlbnQgcmVjdXJzaXZlIHJlbWFpbmRlcgogICAgaWYoZGVwdGggPCBuKXsgICAgICAgICAgICAgICAgLy8gIElmIHdlIGFyZW4ndCBkb25lIHdpdGggdGhlIG51bWJlciB5ZXQ6CiAgICAgIGludCBuZXh0RGVwdGggPSBkZXB0aCAqIDEwOyAvLyAgIEdvIHRvIHRoZSBuZXh0IGRlcHRoIChvZiB0aGUgcG93ZXIgb2YgMTApCiAgICAgIGludCBuZXh0TiA9IG4gLSByZW1haW5kZXI7ICAvLyAgIFJlbW92ZSB0aGUgcmVtYWluZGVyIGZyb20gdGhlIGlucHV0IGBuYAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBEbyBhIHJlY3Vyc2l2ZSBjYWxsIHdpdGggdGhlc2UgbmV4dCBgbmAgYW5kIGBkZXB0aGAKICAgICAgU3RyaW5nIHJlc3VsdFJlY3Vyc2l2ZUNhbGwgPSBnKG5leHROLCBuZXh0RGVwdGgpOwogICAgICBpZihyZW1haW5kZXIgIT0gMCl7ICAgICAgICAgLy8gICBJZiB0aGUgcmVtYWluZGVyIHdhcyBub3QgMDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgIEFwcGVuZCBhICIgKyAiIGFuZCB0aGlzIHJlbWFpbmRlciB0byB0aGUgcmVzdWx0CiAgICAgICAgcmVzdWx0UmVjdXJzaXZlQ2FsbCArPSAiICsgIiArIHJlbWFpbmRlcjsKICAgICAgfQogICAgICByZXR1cm4gcmVzdWx0UmVjdXJzaXZlQ2FsbDsgLy8gICBBbmQgcmV0dXJuIHRoZSByZXN1bHQKICAgIH0gZWxzZXsgICAgICAgICAgICAgICAgICAgICAgIC8vICBFbHNlOgogICAgICByZXR1cm4gSW50ZWdlci50b1N0cmluZyhuKTsgLy8gICBTaW1wbHkgcmV0dXJuIGlucHV0IGBuYCBhcyByZXN1bHQKICAgIH0KICB9CgogIFN0cmluZyBmKGludCBuKXsgICAgICAgICAgICAgICAgLy8gU2Vjb25kIG1ldGhvZCBzbyB3ZSBjYW4gYWNjZXB0IGp1c3QgaW50ZWdlciBgbmAKICAgIHJldHVybiBnKG4sIDEpOyAgICAgICAgICAgICAgIC8vICBXaGljaCB3aWxsIGNhbGwgdGhlIHJlY3Vyc2l2ZSBjYWxsIHdpdGggcGFyYW1ldGVycyBgbmAgYW5kIDEKICB9CgogIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGEpewogICAgTWFpbiBtID0gbmV3IE1haW4oKTsKICAgIG0udGVzdCg5KTsKICAgIG0udGVzdCgxMCk7CiAgICBtLnRlc3QoMTIpOwogICAgbS50ZXN0KDEwMSk7CiAgICBtLnRlc3QoMTIzKTsKICAgIG0udGVzdCgxMDI0KTsKICAgIG0udGVzdCg3MDMwNCk7CiAgfQoKICB2b2lkIHRlc3QoaW50IGlucHV0KXsKICAgIFN5c3RlbS5vdXQucHJpbnRsbihmKGlucHV0KSk7CiAgfQp9