水仙花数 ----> 数位分离
满足特殊性质的一种数:
如果一个3位数各个位数的立方和等于本身,那么该数为水仙花数
153 是水仙花数
1 5 3
1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 3
1 + 125 + 27
126 + 27
153
123 不是水仙花数
1 2 3
1 * 1 * 1 + 2 * 2 * 2 + 3 * 3 * 3
1 + 8 + 27 = 36
153[因为 153 和 100 都是 int 类型]
百位:153 / 100 = 1
十位:153 -> 15: 153 / 10 % 10;
【我们将中间为降值为最低位进行处理,就可以得到】
【这个位置在中间,不能通过除法直接得到,也不能通过取余直接得到】
最低位:153 % 10 = 3
对变量n进行拆分操作:
百位: n / 100;
十位: n / 10 % 10;
最低位: n % 10;
cout << 329132216 % 10
153 -> 15
153 -> 15.3
153 / 10 -> 15 % 10 -> 5
3821938219310931
水仙花数:三位数的拆分
四叶玫瑰数:四位数的拆分
给定一个正整数n,计算出这个正整数是几位数.
12 ---> 2
4312 ---> 4
1 ---> 1
313721 -----> 6
n = 73651 ---> 位数
73651 -/10-> 7365 -/10-> 736 -/10-> 73 -/10-> 7 -/10-> 0 停止
1 2 3 4 5
当我们当前数n为0的时候停止,
输入一个整数n,我们不知道这个n是几位数
当我们不知道一个确切的循环次数的时候我们一般情况下就不会使用for循环
告诉我们停止条件:while 循环
每循环一次记录整数位数的变量就需要+1
int sum = 0;
int n;
cin >> n; // 73651
while(n != 0)
{
sum = sum + 1; // 只要循环一次,位数变量sum就进行+1操作
n = n / 10;
}
12 ----> 1 -----> 0
1 2