给出一串数,求经过多少次状态这串数均变成0;
如果超过1000次,则认为不存在,输出not attained
否则,输出次数
规则为:序列的第i个元素等于第i+1个元素与第i个元素之差的绝对值,而最后一个为第一个元素与最后一个元素之差的绝对值
#include<iostream>
#include<sstream>
#include<fstream>
#include<vector>
#include<list>
#include<deque>
#include<queue>
#include<stack>
#include<map>
#include<set>
#include<bitset>
#include<algorithm>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cctype>
#include<cmath>
#include<ctime>
#include<iomanip>
#define maxn 55
#define rep(i,n) for(i=0;i<n;i++)
using namespace std;
int eq(int str[],int n)
{
int i;
for(i=1;i<n;i++)
{
if(str[i]!=str[i-1])return 0;
}
return 1;
}
int main()
{
int str[21];
int N,i,t,sum,k=1;
bool flag;
while(scanf("%d",&N)!=EOF&&N)
{
rep(i,N) {
scanf("%d",&str[i]);
}
sum=0;
flag=true;
while(!eq(str,N))
{
t=str[0];
rep(i,N-1)
str[i]=abs(str[i+1]-str[i]);
str[i]=abs(t-str[i]);
sum++;
//cout<<str[i];
if(sum>1000)
{
flag=false;
break;
}
}
if(flag)
printf("Case %d: %d iterations\n",k++,sum);
else
printf("Case %d: not attained\n",k++);
}
return 0;
}