我无法理解如何解决老师给我的问题.
给定数字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)
编辑:现在测试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
| 归档时间: |
|
| 查看次数: |
254 次 |
| 最近记录: |