题目大意:注意这几个概念,幸福数,幸福依附于初始数字的幸福数,特立独行的幸福数,独立性,不幸福的数。给定一区间,列出区间内所有的特立独行的幸福数和它的独立性。如果区间内没有幸福数,则输出SAD。
思路:逐个遍历区间内的数字,判断是否是幸福数,若是幸福数则保存在一数组内;并且将该过程中经历的数字标记下来,用来下一步判断是否是特立独行的幸福数。
若数组为空,说明没有幸福数;否则,遍历数组,判断是否是特立独行的幸福数。
提交代码:
#include<bits/stdc++.h>
using namespace std;
const int maxn=10000+5;
int a[maxn], b[maxn];
bool ishappy(int t){
int k=t;
bool flag=false;
vector<int>ans(350,0);
vector<int>v;
int cnt=0;
while(2){
int n=t,a=0;
while(n!=0){
a+=(n%10)*(n%10); n/=10; }
t=a;
if(t==1){
cnt++; flag=true; break; }
else{
if(ans[t]==0) {
cnt++; ans[t]=1; v.push_back(t);}
else {
flag=false; break;}
}