0
点赞
收藏
分享

微信扫一扫

ZOJ4125 Sekiro

我阿霆哥 2023-02-04 阅读 3


题目:​​点击这里​​

题意:

求n对2取k次余数,如果n为奇数,n+1后再取余。

给的数据量很大,单纯遍历就会超时。

当n==0时直接输出0,需要特判。

有两种方法。当k>=32时,直接输出1.

在循环中,当n==1跳出循环输出1.

AC代码:

#include<iostream>
using namespace std;
int main(){
std::ios::sync_with_stdio(false);
int t;
cin>>t;
while(t--){
long long n,m;
cin>>n>>m;
if(n==0)
{
cout<<'0'<<endl;
continue;
}
if(m>=35){cout<<'1'<<endl;
continue; }
for(long long i=1;i<=m;i++){
n=n+1;
n/=2;
}
cout<<n<<endl;
}
}

#include<iostream>
#include<math.h>
#include<string.h>
#include<stdio.h>
#include<algorithm>
using namespace std;
typedef long long ll;
int main()
{
ll n,m,ans;
int i;
int t;
scanf("%d",&t);
while(t--)
{
scanf("%lld %lld",&n,&m);
if(n==0)
{
printf("0\n");
continue;
}
for(i=0;i<m;i++)
{
n+=1;
n/=2;
if(n==1)
break;
}
printf("%lld\n",n);
}


return 0;
}

 

 

举报

相关推荐

0 条评论