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;
}