Pagini recente » Cod sursa (job #841340) | Cod sursa (job #2737879) | Cod sursa (job #1444869) | Cod sursa (job #2952034) | Cod sursa (job #635519)
Cod sursa(job #635519)
#include <cstdio>
#include <map>
using namespace std;
FILE* fin = fopen("ciuperci.in", "r");
FILE* fout = fopen("ciuperci.out", "w");
typedef long long int64;
map<int64, int64> mp;
int64 num(int64 a)
{
map<int64, int64>::iterator iter = mp.find(a);
if (iter == mp.end()) {
return (mp[a] = ((a & 1) ? 2 : 1) * num(a >> 1) * num (a - (a >> 1)));
} else {
return iter->second;
}
}
int main()
{
int t;
fscanf (fin, "%d\n", &t);
mp[0] = 0;
mp[1] = 1;
mp[2] = 2;
mp[3] = 1;
for (int i = 0; i < t; ++i) {
int64 a;
fscanf (fin, "%lld", &a);
fprintf (fout, "%lld\n", num(a));
}
fclose(fin);
fclose(fout);
return 0;
}