使用ONLY整数运算查找数字的第一个数字

Pha*_*ter 7 c# math

我无法理解如何解决老师给我的问题.

给定数字N(0 <= N <= 100),找到它的第一个数字.

例如:

input: 100
result: 1

input: 46
result: 4

input: 3
result: 3
Run Code Online (Sandbox Code Playgroud)

这似乎很容易在第一,但(作为老师说的),应该用做ONLY整数数据类型(换句话说,使用+,-,*,/%运营商).甚至可以这样做吗?

我只是无法实现如何从可变长度数字中提取第一个数字而不使用log10,条件,"while"循环或字符串转换等内容.

Yve*_*ust 10

没有任何条件:

int H= N / 100;       // Hundreds digit
int T= (N / 10) % 10; // Tens digit
int U= N % 10;        // Units digit

int h= H;                      // Hundreds flag
int t= (T + 9) / 10 * (1 - h); // Tens flag
int u= (1 - t) * (1 - h);      // Units flag

int Answer= u * U + t * T + h * H; // Combination
Run Code Online (Sandbox Code Playgroud)


alx*_*ull 5

编辑:现在测试0和100:

var result = n / 10 * (1 - n / 100) + n / 100 + (109 - n) / 100 * n;
Run Code Online (Sandbox Code Playgroud)

这个怎么运作:

n        | n / 10 * (1 - n / 100) | n / 100 | (109 - n) / 100 * n
-----------------------------------------------------------------
10 - 99  | 1 - 9                  | 0       | 0
-----------------------------------------------------------------
100      | 0                      | 1       | 0
-----------------------------------------------------------------
0 - 9    | 0                      | 0       | 0 - 9