JAVA中 x=10035 x值是多少,计算步骤是啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA中 x=10035 x值是多少,计算步骤是啥?相关的知识,希望对你有一定的参考价值。

在Java中,操作符|是按位或运算符,用于对二进制数进行位级别的或运算。

计算步骤如下:

将整数100和35转化为二进制数:
100的二进制为01100100
35的二进制为00100011
进行按位或运算:
Copy code
01100100
| 00100011
01100111

Copy code
- 将结果`01100111`转化为十进制数,结果是103.

因此,`x=100|35`执行后,x的值将会是103。
参考技术A

x=100|35,x的值为135。

计算步骤:

    将100和35转换成二进制,分别为1100100和100011。

    使用按位或运算符(|)对两个二进制数进行运算,即1100100|100011。

    对二进制中每一位进行比较,如果两个数在该位都是0,则结果为0,否则为1。

    得到结果1100111,转换成十进制为135。

参考技术B 在Java中,竖杠符号(|)表示按位或(OR)运算。按位或运算是将两个操作数对应的二进制位进行逻辑或运算,结果中每一位上的值为两个操作数中相应位上值的逻辑或结果。

对于题目中的表达式 x=100|35,可以将 100 和 35 转换为二进制形式,并按位进行或运算。

- 100的二进制形式为 1100100;
- 35的二进制形式为 100011;
- 将这两个数按位或运算得到 1111111。

因此,x 的二进制形式为 1111111,转换为十进制即为 127。

因此,最终 x 的值为 127。

BZOJ 4320 ShangHai2006 Homework

题意:

给出N(<=1e5)个操作,操作分为两种,①在集合中添加一个数x,②问这个集合中mod x 的最小值是多少。(x <= 3e5)

 

题解:

0.首先我们发现log家族中有算法满足这道题目,那么采用分块的思想。

1.那么对于小于根号下MAX(x)的询问,直接暴力维护答案,对于大于根号MAX(x)的询问,只需要找到第一个大于等于K * x 的值是多少。

2.那么现在问题是维护第一个大于等于K * x 的值是多少,现在有两种选择,①用STL中的<set> 中的 lower_bound 复杂度为logx  ②用并查集充当链表 复杂度很小

 

代码:

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;

const int block = 507;
const int N = 3e5 + 7;
char ch[2];
int pa[N], x, q[N], o[N], ans[N], mini[N], n, cnt;

int find (int x) {
	return pa[x] == x ? x : pa[x] = find (pa[x]);
}

int main () {
	scanf ("%d", &n);
	memset (mini, 127, sizeof mini);
	for (int i = 0; i < N; ++i) pa[i] = i + 1;
	for (int i = 1; i <= n; ++i) {
		scanf ("%s%d", ch, &x);
		if (ch[0] == ‘A‘) {
			o[i] = 1;
			q[i] = x;
			pa[x] = x;
			for (int i = 1; i <= block; ++i) {
				mini[i] = min (mini[i], x % i);
			}
		}
		else if (ch[0] == ‘B‘) {
			o[i] = 2;
			q[i] = x;
			if (q[i] <= block) ans[i] = mini[q[i]];
		}
	}
	for(int i = N - 1;i >= 0; --i) pa[i] = find(pa[i]);
	for (int i = n; i >= 1; --i) {
		if (o[i] == 1) pa[find (q[i])] = pa[find (q[i] + 1)];
		else if (o[i] == 2) {
			if (q[i] > block) {
				int ret = 1e9+7;
				for (int j = 0; j < N; j += q[i]) {
					if (find (j) == N) continue;
					ret = min (ret, find(j) % q[i]);
				}
				ans[i] = ret;
				if (ret == 1e9+7) ans[i] = q[i] - 1;
			} 
		}
	}
	for (int i = 1; i <= n; ++i) if (o[i] == 2) printf ("%d\n", ans[i]);
	return 0;
}

  

总结:

合理运用并查集当链表的性质QAQ

以上是关于JAVA中 x=10035 x值是多少,计算步骤是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Google App Engine URL Fetch 为 X-Forwarded-For 标头设置的值是多少?

使用 sklearn RandomForestRegressor 时我的数据框的 x 值是多少?

在 numpy polyfit 中使用的权重值是多少,拟合的误差是多少

C语言中表达式是怎么计算的?

1 求和y和z的值是多少?

已知当X=1时,多项式ax5+bx4+cx3+dx2+ex+4的值等于5,则代数式a+b+c+d+e的值是多少