地址 这道题题意很简单, 就是只狼死一次 , 钱掉一半,并向上取整 ,就是数据太大 , 普通做法会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; }