-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path1343A
134 lines (99 loc) · 3.08 KB
/
1343A
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#pragma region TEMPLATE
#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long int ulli;
typedef long long int lli;
typedef long int li;
typedef pair<int, int> pii;
typedef map<int, int> mii;
typedef map<string, int> msi;
typedef map<string, string> mss;
typedef vector<int> vi;
typedef vector<lli> vlli;
typedef vector<bool> vb;
typedef vector<string> vs;
#define MOD1 1000000007
#define MOD2 1000000009
#define all(v) v.begin(),v.end() // to be tested
#define OUT0(x) cout<<(x)<<" "
#define OUT1(x) cout<<(x)<<endl
#define OUT2(x,y) cout<<(x)<<" "<<(y)<<endl
#define TRACE1(x) cout<<(#x)<<" "<<(x)<<endl
#define TRACE2(x,y) cout<<(#x)<<" "<<(x)<<", "<<(#y)<<" "<<(y)<<endl
#define TRACE3(x,y,z) cout<<(#x)<<" "<<(x)<<", "<<(#y)<<" "<<(y)<<", "<<(#z)<<" "<<(z)<<endl
#define MIN3(x,y,z) min(x,min(y,z))
#define MAX3(x,y,z) max(x,max(y,z))
#define IN1(x) cin>>(x)
#define IN2(x,y) cin>>(x)>>(y)
#define IN3(x,y,z) cin >>(x)>>(y)>>(z)
#define HR cout<<"\n-------------------------\n"
#define LINE cout<<"\n"
void i_o() {
}
template <typename T> void inpA (T arr[], int n){
for(int i=0; i<n; i++) cin >> arr[i];
}
template <typename T> void inpV (vector<T> &vec, int n) {
vec.resize(n);
for(int i=0; i<n; i++) cin >> vec[i] ;
}
template <typename T> void outV (const vector<T> &vec) {
for(int i=0; i<vec.size(); i++) cout << vec[i] << " " ;
cout << endl ;
}
template <typename T> inline T sumV (const vector<T> &vec) {
T res=0;
for(int i=0; i<vec.size(); i++) res +=vec[i] ;
return res;
}
template <typename T> inline int maxIndexV (const vector<T> &vec) {
return max_element(vec.begin(), vec.end()) - vec.begin();
}
template <typename T> inline int minIndexV (const vector<T> &vec) {
return min_element(vec.begin(), vec.end()) - vec.begin();
}
template <typename T> inline void sortV (vector<T> &vec) { sort(vec.begin(), vec.end() ) ; }
template <typename T> inline void rSortV (vector<T> &vec) { sort(vec.begin(), vec.end(), greater<T>()) ; }
// make it return index or -1 // test it
template <typename T> inline int bSearchV (vector<T> &vec, T key)
{
auto itr = lower_bound(vec.begin(), vec.end(), key);
if(itr == vec.end() || *itr != key){
return -1;
}
else{
return (itr - vec.begin()) ;
}
}
#pragma endregion
//----------------------------------------------------
//---------START OF SOLUTION--------------------------
//----------------------------------------------------
// global var
void pre(){
}
int main(){
// #ifndef ONLINE_JUDGE
// clock_t clock_begin = clock();
// #endif
i_o();
pre();
// ----- START
lli t;cin>>t;
while(t--){
lli n;cin>>n;
lli ans =1;
for (int i=2; ;i=i*2){
ans +=i;
if (n%ans ==0) {
ans = (n/ans);break;
}
/*else{
ans = (n%ans);break;
}*/
}
cout<<ans<<endl;
}
// ---- END
return 0 ;
}