#include <iostream>
using namespace std;
int num=0; //全域對迭代的次數進行計數
int Q[100]; //每次迭代的結果所在數組
typedef struct
{
int b;
int s;
int g;
} CType;
int quwei(int number,CType state[])
{
number = number%1000;
state[num].b = number/100; //百位
state[num].s = (number/10)%10; //十位
state[num].g = number%10; //個位
int q=Q[num] = state[num].b*state[num].b*state[num].b+state[num].s*state[num].s+state[num].g;
return q;
}
bool confilict(int Q[],int q)
{
for(int i=0;i<num-1;i++)
{
if(q==Q[i])
return true;
}
return false;
}
int main()
{
int q=0;
CType state[100];
int number;
char c='y';
while(c=='y')
{
cout<<endl<<"請輸入一個整數:";
cin>>number;
q = quwei(number,state); //得到Q[0]
num++;
while(!confilict(Q,q))
{
q = quwei(q,state);
num++;
}
cout<<"迭代的次數是:"<<num-1<<endl;
cout<<"每次迭代的中間結果是:"<<endl;
for(int j=0;j<num-1;j++)
cout<<"Q["<<j<<"]"<<":"<<'/t'<<Q[j]<<endl;
cout<<"再來一次: y/n?"<<endl;
num = 0;
cin>>c;
}
return 0;
}