完整代码:
#include <iostream> #include <cstdio> #include <string> #include <cstring> #include <algorithm> #include <map> #include <cmath> using namespace std; int main() { int t; scanf("%d",&t); while(t--) { int n,k,result; scanf("%d%d",&n,&k); if(k>=30) { result=1;//因为只要k>=30那除完的数一定大于零小于1了(2的30次方超过了n的最大值) } else{ result=n; for(int i=0;i<k;i++) { if(result%2==0) { result/=2; } else{ result=result/2+1; } } } if(n==0) { printf("0\n"); } else{ printf("%d\n",result); } } }