Use itoa to convert to a base 3 string. Drop the last trit and convert back to base 10.
// Note: itoa is non-standard but actual implementations
// don't seem to handle negative when base != 10.
int div3(int i) {
char str[42];
sprintf(str, "%d", INT_MIN); // Put minus sign at str[0]
if (i>0) // Remove sign if positive
str[0] = ' ';
itoa(abs(i), &str[1], 3); // Put ternary absolute value starting at str[1]
str[strlen(&str[1])] = '\0'; // Drop last digit
return strtol(str, NULL, 3); // Read back result
}
private int dividedBy3(int n) {
List<Object> a = new Object[n].ToList();
List<Object> b = new List<object>();
while (a.Count > 2) {
a.RemoveRange(0, 3);
b.Add(new Object());
}
return b.Count;
}
Use itoa to convert to a base 3 string. Drop the last trit and convert back to base 10.
Using BC Math in PHP:
MySQL (it's an interview from Oracle)
Pascal:
x86-64 assembly language:
Use cblas, included as part of OS X's Accelerate framework.
How about this approach (c#)?
Using counters is a basic solution:
It is also easy to perform a modulus function, check the comments.