fork(1) download
  1. #include<cstdio>
  2. #include<iostream>
  3. #include<algorithm>
  4. #include<string>
  5. #include<cstring>
  6. #include<vector>
  7. #include<stack>
  8. #include<queue>
  9. #include<deque>
  10. #include<map>
  11. #include<set>
  12. #include<limits>
  13. #include<climits>
  14. #include<cmath>
  15. #include<functional>
  16. #include<ctime>
  17. #include<cstdlib>
  18. #include<fstream>
  19. #include<typeinfo>
  20.  
  21. using namespace std;
  22.  
  23. typedef long long int ll;
  24. typedef short int i16;
  25. typedef unsigned long long int u64;
  26. typedef unsigned int u32;
  27. typedef unsigned short int u16;
  28. typedef unsigned char u8;
  29.  
  30. int n;
  31.  
  32. string s;
  33.  
  34. void input()
  35. {
  36. s.clear();
  37. scanf("%d", &n);
  38. }
  39.  
  40. void solve()
  41. {
  42. while(n)
  43. {
  44. s+=((n%2)+'0');
  45. n>>=1;
  46. }
  47. //cout<<s<<'\n';
  48. s+='0';
  49. int i,j,ones=0;
  50. for(i=0;i<s.size();i++)
  51. {
  52. if(s[i]=='1')
  53. ones++;
  54. if(s[i]=='1' && s[i+1]=='0')
  55. {
  56. ones--;
  57. swap(s[i],s[i+1]);
  58. for(j=0;j<i && ones;j++)
  59. {
  60. ones--;
  61. s[j]='1';
  62. }
  63. break;
  64. }
  65. else
  66. s[i]='0';
  67. }
  68. int ans=0,curr=1;
  69. for(i=0;i<s.size();i++)
  70. {
  71. ans+=curr*(s[i]-'0');
  72. curr<<=1;
  73. }
  74. printf("%d\n", ans);
  75. }
  76.  
  77. int main()
  78. {
  79. int i,t;
  80. scanf("%d", &t);
  81. for(i=1;i<=t;i++)
  82. {
  83. input();
  84. printf("Case %d: ", i);
  85. solve();
  86. }
  87. return 0;
  88. }
  89.  
Success #stdin #stdout 0s 3140KB
stdin
Standard input is empty
stdout
Standard output is empty