笔试时间:2023年9月6日 秋招
第一题
题目
小红定义一个数为“完美数”,当且仅当该数仅有一个非零数字。例如 5000,4,1,10,200都是完美数。小红拿到了一个大小为n的数组,她希望选择两个元素,满足它们的乘积为完美数。小红想知道,共有多少种不同的取法?
数据范围:
1<=n<=2000
1<=ai<=10^9
样例输入
[25,2,1,16]
样例输出
3
说明:25* 2=50,2* 1=2,25*16=400
参考题解
直接暴力就能过。
C++:[此代码未进行大量数据的测试,仅供参考]
class Solution {
public:
using ll = long long;
int perfectPair(vector<int>& arr) {
int n = arr.size();
int ans = 0;
for (int i = 0; i < n; ++i) {
for (int j = i + 1; j < n; ++j) {
ll m = ll(arr[i]) * arr[j];
string s = to_string(m);
bool ok = true;
for (int k = 1; k < s.size(); ++k) {
if (s[k] != '0') {
ok = false;
break;
}
}
ans += ok;
}
}
return ans;
}
};
Java:[此代码未进行大量数据的测试,仅供参考]
import java.util.List;
class Solution {
public int perfectPair(List<Integer> arr) {
int n = arr.size();
int ans = 0;
for (int i = 0; i < n; ++i) {
for (int j = i + 1; j < n; ++j) {
long m = (long) arr.get(i) * arr.get(j);
String s = String.valueOf(m);
boolean ok = true;
for (int k = 1; k < s.length(); ++k) {
if (s.charAt(k) != '0') {
ok = false;
break;
}
}
ans += ok ? 1 : 0;
}
}
return ans;
}
}
Python:[此代码未进行大量数据的测试,仅供参考]
class Solution:
def perfectPair(self, arr):
n = len(arr)
ans = 0
for i in range(n):
for j in range(i+1, n):
m = arr[i] * arr[j]
s = str(m)
ok = True
for k in range(1, len(s)):
if s[k] != '0':
ok = False
break
ans += 1 if ok else 0
return ans
第二题
题目
我们定义子序列为字符串中可以不连续的一段,而子串则必须连续。例如rderd包含子序列"red”,且不包含子串"red”,因此该字符串为可爱串。小红想知道,长度为n的、仅由'r''e''d'三种字母组成的字符串中,有多少是可爱串? 答案请对10^9+7取模。数据范围:1<=n<=10^5
样例输入
4
样例输出
3
说明:
reed"、"rerd"、"rded"
2023 腾讯音乐笔试题 0906_牛客网- 相关评论
- 我要评论
-