题解 | #素数判断#

素数判断

https://ac.nowcoder.com/acm/contest/26656/1001

逆序对

找规律做的,下面讲述规律发现的过程:

先写暴力观察规律

#include<bits/stdc++.h>
using namespace std;
#define int long long

// a存储按位拆分结果
int a[64];
// ai表示拆分出的二进制长度
int ai;

// 按位拆分函数
void cf(int x) {
	ai = 0;
	while (x) {
		a[ai++] = x & 1ll;
		x /= 2;
	}
}

signed main() {
    // 暴力计算二进制位1-20的情况
	for (int n = 1; n <= 20; n++) {
        // 枚举的所有数一定小于2^n
		int mx = 1ll << n;
		int ans = 0;// 计次
		for (int i = 0; i < mx; ++i) {
			cf(i);// 先拆分
			for (int j = ai - 1; j >= 0; --j) {// 当成字符串看
				if (a[j]) {// 前面得是1才行
					for (int k = j - 1; k >= 0; --k) {
						if (a[k] == 0) { // 后面有0就算一个
							++ans;
						}
					}
				}
			}
		}
		cout << n << ' ' << ans << '\n';
	}
	return 0;
}

运算结果:

1 0
2 1
3 6
4 24
5 80
6 240
7 672
8 1792
9 4608
10 11520
11 28160
12 67584
13 159744
14 372736
15 860160
16 1966080
17 4456448
18 10027008
19 22413312
20 49807360

alt

3*2=6
4*6=24
5*16=80
6*40=240
7*96=672
8*224=1792
9*512=4608

alt

6=6/1=6*2/2
16=24/1.5=24*2/3
40=80/2=80*2/4
96=240/2.5=240*2/5

alt

AC代码

#include<bits/stdc++.h>
using namespace std;
#define int long long

const int N = 1e9+5;
const int p = 1e9+7;

int qpow(int a, int b) {
	int ans = 1;
	for (; b; b >>= 1) {
		if (b & 1) ans = (ans * a) % p;
		a = (a*a) % p;
	}
	return ans;
}

int sv(int n) {
	if (n < 2) {
		return 0;
	}
	if (n == 2) {
		return 1;
	} else if (n == 3) {
		return 6;
	}

	return (n % p) * (((n - 1) % p) * qpow(2, n - 3) % p) % p;
}

signed main() {
	int n;
	cin >> n;
	cout << sv(n);
	return 0;
}
全部评论

相关推荐

痛痛痛痛信灬:我小米都面完两个月了 八月底面完的,现在还是显示面试中,没有比我恐怖的
点赞 评论 收藏
分享
10-19 10:28
已编辑
西南石油大学 后端工程师
团孝子已上线feeling:面了很多家公司,能感受到目前只有小公司+外包喜欢问八股。大厂虽然也问八股,但是是从实习、项目中进行提问,并且大厂会问很深,面试官也会对你的回答进行思考➕追问,所以准备大厂面试前一定要备好相关资料。对于算法,我做的是codetop前100+力扣hot100+力扣高频150,面试中实感hot100就足够,基本上只要是hot100就秒答。对于项目和八股,我做的也是烂大街的星球项目,八股则是看小林和问ai,自己也写了很多技术博客和画了很多思维导图,并且自己也尝试用嘴巴说出来,不只停留于纸面。运气也很重要,必须要让面试官/HR看到简历才行,所以建议投递时间是下午两点。tl:第一岗位9.9&nbsp;投递9.10&nbsp;一面(一面评价:最近见过最强的大三,结束五分钟后约二面,都晚上九点了不下班吗)9.11&nbsp;二面(三道算法a出两道,反问评价:经验不够等横向,我实习生要啥经验)9.21挂(实习时间过短+其他原因,想要一年实习的,为什么不招个正职)第二岗位10.10投递10.11约面(主管打电话,说看到我之前投递记录了想要我挂qa职进去干后端,同意)10.14&nbsp;一面(无八股,主动说确实很强,意愿很强)10.16&nbsp;oc其余,友邦,东软,东华,惠择,用友oc已拒京东测开一面挂(投后端被测开捞)腾讯测试已拒(投后端被测开捞)ps:表扬惠择的主管面,没怎么问技术(可能是一面面试官沟通过了),全程一起讲大道理,解答了心中很多疑惑,也告诉我以面试官角度来看怎么选候选人,如果可以下次一定选惠择
HeaoDng:美团好像可以触发一面通
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务