地址
这道题题意很简单, 就是只狼死一次 , 钱掉一半,并向上取整 ,就是数据太大 , 普通做法会TLE,要考虑当只狼身上金钱数只剩1或0的情况时, 只狼的金钱数是不变的。
附上蒟蒻AC代码:
#include <iostream>
#include <algorithm>
#include <cmath>
//#include <bits/stdc++.h>
#include <vector>
#include<cstdio>
using namespace std;
int main( )
{
int t;
cin >>t;
while(t--){
int n , k;
cin >>n >>k;
for(int i=1;i<=k;i++){
n=(n+1)/2;//向上取整。
if(n==1||n==0)
break;
}
cout<<n<<endl;
}
return 0;
}
超时代码
#include <iostream>
#include <algorithm>
#include <cmath>
//#include <bits/stdc++.h>
#include <vector>
#include<cstdio>
using namespace std;
int main( )
{
int t;
cin >>t;
while(t--){
double n , k;
cin >>n >>k;
if((int)k%2==0)
{
k = k/2;
for(int i=1;i<=k;i++){
n/=4;
}
}
else {
k = k/2;
for(int i=1;i<=k;i++){
n/=4;
}
n/=2;
}
cout<<ceil(n)<<endl;
}
return 0;
}