Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <algorithm>
- #include <string>
- #include <cmath>
- using namespace std;
- string to(int x){
- string rs = "";
- while (x > 0){
- char y = (x % 2) + 48;
- x /= 2;
- rs += y;
- }
- reverse(rs.begin(), rs.end());
- while (rs.size() < 8){
- rs = '0' + rs;
- }
- return rs;
- }
- int fr(string y){
- int sz = y.size();
- reverse(y.begin(), y.end());
- int ans;
- for (int i = 0;i<sz;++i){
- ans += pow(2,i) * (y[i] - '0');
- }
- //cout<<"ans = "<<ans<<'\n';
- return ans;
- }
- //Если число нечётное, то циклически смещаем все двоичные цифры в байте на 2 позиции вправо.
- string odd(string x){
- string A,B,C;
- int sz = x.size();
- //cout<<"x = "<<x<<'\n';
- B = x.substr(sz-2);
- A = x.substr(0, sz-2);
- //cout<<"A = "<<A<<'\n';
- //cout<<"B = "<<B<<'\n';
- C = B + A;
- //cout<<"C = "<<C<<'\n';
- return C;
- }
- //Если число чётное, то смещаем все двоичные цифры в байте на 3 позиции влево нециклически (записываем на образовавшиеся места 0).
- string even(string x){
- //cout<<"x = "<<x<<'\n';
- //cout<<"x[3] = "<<x[3]<<'\n';
- string A = x.substr(3);
- //cout<<"A = "<<A<<'\n';
- //cout<<"res = "<<A+"000"<<'\n';
- return A + "000";
- }
- int main()
- {
- //odd("01101001");
- //fr(odd("01101001"));
- //even(to(106));
- //fr(even(to(106)));
- int a,b;
- cin>>a>>b;
- int mx = -1;
- int ans = -666;
- for (int i =a;i<=b;++i){
- //cout<<"i = "<<i<<'\n';
- string to2, chg; //change
- to2 = to(i);
- int res = -775;
- if (i % 2 == 0){
- chg = even(to2);
- }
- else {
- chg = odd(to2);
- }
- res = fr(chg);
- //cout<<"res = "<<res<<'\n';
- if (res >= mx){
- ans = i;
- mx = res;
- }
- }
- cout<<ans<<'\n';
- }
- /*
- 200 250
- 247+
- 100 150
- 126+
- 150 198
- 195+
- 59 61
- 60+
- 46 48
- 47+
- */
Add Comment
Please, Sign In to add comment