#include #define REP(i,s,n) for(int i=s;i> n >> m; if( m == "0" ) { cout << 1 << endl; return 0; } int a; a = n[n.size()-1] - '0'; vector loop; bool used[10]; memset(used,false,sizeof(used)); int cur = a; while( !used[cur] ){ used[cur] = true; loop.push_back(cur); ( cur *= a ) %= 10; } int pt = 0; rep(i,m.size()) { pt *= 10; ( pt += (m[i]-'0') ) %= (int)loop.size(); } ( ( pt -= 1 ) += (int)loop.size() ) %= (int)loop.size(); cout << loop[pt] << endl; return 0; }