C11SEQ3 - Dãy số

Tác giả: flashmt

Ngôn ngữ: C++

#include <iostream>
#include <algorithm>
#include <sstream>
#include <string>
using namespace std;

int modify(int x)
{
	string s;
	stringstream ss;
	ss << x; ss >> s;
	sort(s.begin(),s.end());
	ss.clear();
	ss << s; ss >> x;
	return x;
}

int f[100], d[1000100], period, start;

int main()
{
	f[1] = 1; d[1] = 1;
	for (int i = 2; i < 100; i++)
	{
		f[i] = modify(f[i-1] * 2);
		if (!d[f[i]]) d[f[i]] = i;
		else period = i - d[f[i]], start = d[f[i]];
	}
	
	int n;
	cin >> n;
	if (n < start) cout << f[n] << endl;
	else cout << f[start + (n - start) % period] << endl;
}

Download