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乗した値の中央の値を抽出。
その中央の値を足し上げ、出力。
~了~