0137 - Middle-Square Method

#include <iostream>
using namespace std;

void Slove(int x)	{
	int n, number[8];

	for (int i=0; i<x; ++i)	{
		cin >> n;
		cout << "Case " << i+1 << ":" << endl;
		for (int i=0; i<10; ++i)	{
			n*=n;
			int tmp=n, answer=0;
			for (int j=0; j<8; ++j)	{
				number[j]=tmp%10;
				tmp/=10;
			}
			int digit=1;
			for (int j=2; j<6; ++j)	{
				answer+=number[j]*digit;
				digit*=10;
			}
			cout << answer << endl;
			n=answer;
		}
	}
}

int main(void)	{
	int x;

	while (cin >> x)
		Slove(x);
	return 0;
}

問題文に記載されている通り、2乗した値の中央の値を抽出。
その中央の値を足し上げ、出力。
~了~