Mod, Or and Everything HDU - 6950

Posted Jozky86

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mod, Or and Everything HDU - 6950相关的知识,希望对你有一定的参考价值。

Mod, Or and Everything HDU - 6950

题意:

给你一个n,问(n%1) or (n%2) or … or (n %n)的值

题解:

无论n为奇偶,定义m=(n-1)/2,
我们发现n mod i<=m,而当i<=m时,有n mod (n-i) =i ,于是就有n mod i 取到0 ~ m的所有整数,那0 ~ m的所有or不就是m的位数全是1,m的位数全是1怎么求,可以直接按照位数求,也可以用lowbit求,都一样

代码:

#include<bits/stdc++.h>
#define debug(a,b) printf("%s = %d\\n",a,b);
typedef long long ll;
using namespace std;
//qdu打铁匠
const ll INF=0x3f3f3f3f;
inline int read(){
   int s=0,w=1;
   char ch=getchar();
   while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
   while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();//s=(s<<3)+(s<<1)+(ch^48);
   return s*w;
}
int main()
{
	int t;
	cin>>t;
	while(t--){
		ll n;
		cin>>n;
		if(n==1||n==2){
			cout<<0<<endl;
			continue;
		}
		ll w=(n-1)/2;
		ll num=0;
		while(w){
			num++;
			w>>=1;
		}
		ll tot=0;
		while(num--){
			tot=tot<<1|1;
		}
		cout<<tot<<endl;
	} 
	return 0;
}

以上是关于Mod, Or and Everything HDU - 6950的主要内容,如果未能解决你的问题,请参考以下文章

错误::文件`/boot/grub/i386-pc/normal.mod未找到并且ls显示(hd0),(hd0,msdos1),(hd0,msdos5)[关闭]

Decide what you want,and go after it with everything you got!

[SP1][Luogu]TEST : Life, the Universe, and Everything

题解 SP1 TEST - Life, the Universe, and Everything

题解 SP1 TEST - Life, the Universe, and Everything

Table 'hd_online' is marked as crashed and should be repaired索引损坏