题解
2026-03-26 20:47:12
发布于:浙江
5阅读
0回复
0点赞
大家好,我是энтджей,今天是我2026年第七次正式发题解!(和上次跟新差了一个月(doge))
能不能点个赞
回归正题:
首先:
- 这道题目是直接暴力模拟的
然后:
- 经过分析(我也不知道怎么分析的(doge))这道题测试点里所有的
快乐数从n变成1做多需要5步,所以这道题在输入完仅仅需要模拟这个过程5次就可以了
int step = 0;
while(step < 5){
num = add(num);
step++;
}
接着
- 我个人比较喜欢写函数,这里就只讲函数了
- 仅仅需要dowhile(本人喜欢)调出每一个数位的数字在乘以自己,把所有的平方和相加,在赋值,就是很简单的
int add(int x){
int ans = 0;
do {
ans += (x % 10) * (x % 10);
x /= 10;
} while(x);
return ans;
}
最后
- 只需要判断
n等不等于1就行了
if(num == 1) cout << "YES";
else cout << "NO";
完整代码:
#include<bits/stdc++.h>
using namespace std;
int num;
int add(int x){
int ans = 0;
do {
ans += (x % 10) * (x % 10);
x /= 10;
} while(x);
return ans;
}
int main(){
cin >> num;
int step = 0;
while(step < 5){
num = add(num);
step++;
}
if(num == 1) cout << "YES";
else cout << "NO";
return 0;
}
🎉完结撒花🎉
这里空空如也




有帮助,赞一个