当前位置:   article > 正文

小T的操作序列——暴力_细心的小t教练c++

细心的小t教练c++

小T的操作序列

位运算不会怎末办 ???那就暴力呀!!!!

  1. #include<iostream>
  2. #include<cmath>
  3. #include<set>
  4. #include<algorithm>
  5. #include<string>
  6. #include<map>
  7. #include<cstdio>
  8. #define ll long long
  9. #define x firdt
  10. #define y second
  11. #define met(a,b) memset(a,b,sizeof a)
  12. #define inf 0x3f3f3f3f
  13. using namespace std;
  14. const int N=1e6+10;
  15. const int mod=1e9+7;
  16. int j;
  17. int dd(int a[]) {
  18. int sum=0;
  19. for(int i=0; i<j; i++) {
  20. if(a[i]==2) {
  21. a[i]=0;
  22. a[i+1]++;
  23. }
  24. }
  25. for(int i=j-1; i>=0; i--) sum=sum*2+a[i];
  26. return sum;
  27. }
  28. int main() {
  29. int n,t;
  30. while(~scanf("%d%d",&n,&t)) {
  31. int a[35]= {0};
  32. j=0;
  33. while(n) {
  34. a[j++]=n%2;
  35. n/=2;
  36. }
  37. j=34;
  38. while(t--) {
  39. int x,y;
  40. scanf("%d%d",&x,&y);
  41. x--;
  42. if(a[x]==0) {
  43. printf("%d\n",dd(a));
  44. continue;
  45. }
  46. a[x]=0;
  47. if(a[x+y]==0) {
  48. a[x+y]=1;
  49. } else a[x+y]+=1;
  50. printf("%d\n",dd(a));
  51. }
  52. }
  53. }

题目描述

小T在上网冲浪时发现了一组操作序列,潜意识告诉他根据上面的信息操作会有意向不到的事情发生。
操作规则是,对于一个数N,将其二进制下的某一位的1移动至另一个位置,如果原位置不为1则忽略,如果目标位置原先也为1,则进位。依次操作改变N的值。

输入

本题为多样例测试。
首行输入两个整数N、T,分别代表原始数字和样例数,0 < N < 1e9,T 不超过100000。
下面T行,每行输入两个整数x、y,代表将第x位向左移y位,0<x<31,-x<y<31 - x。

输出

对于每次操作,输出操作后的数,单独占一行,题目保证答案不会超出int范围。

样例输入 

75 3
7 -4
4 -3
4 7

样例输出 

15
8
1024

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/884282
推荐阅读
相关标签
  

闽ICP备14008679号