[高効率アルゴリズム設計]Calculator conundrum Uva 11549

660 ワード

sstreamを使用して入出力を容易にし、
ある要素がアクセスされたかどうかを判断するために、配列が開かないときにsetセットを使用できます.
#include 
#include 
#include 

using namespace std;

int next(int n, int k){
	stringstream ss;
	ss << (long long)k*k;
	string s = ss.str();
	if (s.size() > n) s = s.substr(0, n);
	int ans;
	stringstream ss2(s);
	return ans;
}

int main(){
	int T;
	cin >> T;
	while (T--)
	{
		int n, k;
		cin >> n >> k;
		set s;
		int ans = k;
		while (!s.count((k)))
		{
			s.insert(k);
			if (k > ans) ans = k;
			k = next(n, k);
		}
		cout << ans << endl;
	}
	return 0;
}