快手实习笔试题总结

题目一:

返回无重复幂因子的 N进制完美数之和的所有幂因子。题目太长了,总的来说就是给你一个R和N,用N的幂来组成R且不能使用重复的N的幂。返回幂的集合。
例如R=33,N=3,那么33=3+3+3^3。就是使用了重复的幂,此时返回空集。

解析:

可以举实例进行分析,该题就是进制转换问题。把R转换为N进制,N进制每一位不能大于1,然后返回为1的位。

Solution:

#include <iostream>
#include <queue>
#include <vector>
using namespace std;
vector<int> GetPowerFactor(int R, int N)
{
	queue<int> que;
	vector<int> vec;//存储结果
	if (N == 1)
	{
		for (int i = 0; i < R; i++)
			vec.push_back(i);
		return vec;
	}
	/*转换为N进制*/
	while (R)
	{
		if (R % N > 1)  return vec;//每一位都小于等于1
		que.push(R % N);
		R = R / N;
	}
	int t = 0;
	while (!que.empty())
	{
		if (que.front() == 1) vec.push_back(t);
		que.pop();
		t++;
	}
	return vec;
}
int main()
{
	int R, N;//输入的判断数R和N进制
	cin >> R >> N;
	vector<int> res;
	res = GetPowerFactor(R, N);
	int n = res.size();
	for (int i = 0; i < n; i++)
		cout << res[i] << " ";
	cout << endl;
	return 0;
}

题目二:待明白~~

给定一字符矩阵m* n,其中标为 ’ * ’ 的地方不能坐人,标为 ‘.’ 的地方能做人。因为疫情影响,要求每个人相邻的位置不能有人。求这一矩阵最多能坐下多少人。相邻:上下左右四个位置为相邻
例如:
[[’’, ‘.’, '’, ‘’, ‘.’],
[’
’, ‘.’, ‘’, '’, ‘’],
[’
’, ‘.’, ‘’, '’, ‘.’]]

最多能坐 4 个人。
相似题目: https://www.cnblogs.com/flightless/p/12309522.html
状态压缩DP

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值