Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
30 აპრილი
მოცემული მთელი დადებითი N რიცხვის მიხედვით დადგინდეს იმ დისკოს ნომერი, რომელიც მოზრაობს მე-N სვლაზე ჰანოის კოშკების კლასიკური ამოცანის ამოხსნისას, თუ დისკები გადანპმრილია დიამეტრის ზრდის მიხევით დაწყებული 0-დან. // ამოხსნა 1 - გრეის კოდის გამოყენებით #include <iostream> using namespace std; int main() { long long N,prev,next; cin>>N; if(N&1){cout<<0; return 0;} next=N^(N>>1); N--; prev=N^(N>>1); next^=prev; for(N=0;next>1;next>>=1)N++; cout<<N; } https://www.e-olymp.com/en/problems/831 // ამოხსნა 1 - გრეის კოდის გამოყენებით - გადის 70%-ს // მოვნახოთ შეცდომა #include <iostream> #include <vector> using namespace std; int main() { int N,M,prev,next,i,P,K,d; string D="-+"; cin>>N>>M; vector<int>V(N); for(i=0;i<N;i++) cin>>V[i]; for(P=V[0],i=1;i<N;i++) P-=V[i]; K=1; prev=0; //cout<<P<<endl; while(K<(1<<N-1) && P!=M) { next=K^(K>>1); d=next^prev; for(i=1;d>1;i++,d>>=1); if(next>prev)P+=2*V[i]; else P-=2*V[i]; K++; //cout<<P<<' '<<next<<' '<<i<<endl; prev=next; } if(P!=M)cout<<"No solution"; else { cout<<V[0]; for(i=1;i<N;i++,next>>=1) cout<<D[next&1]<<V[i]; cout<<"="<<M; } }
run
|
edit
|
history
|
help
0
alm7ly
Shorting in one line using class members std and boost bind
Binary search on sorted array
Hello World
nearest
remove_copy-30-Seconds-of-C++
tasks
BinSearch
scemo dd
Dar