15个行测题,15个计算机单选题,2道编程题
1、
我们认为一个数是7好数,当且仅当它的开头和结尾都是7。给定一个正整数n,请问[1, n]中有多少个7好数。
补充说明
函数的第一个参数输入一个整数n(1 <= n <= 105)
示例1
输入:
100
输出:
2
说明区间[1, 100]中只有7和77是7好数4
C++ 实现代码
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param n int整型
* @return int整型
*/
int seven_good_number(int n) {
// write code here
int ans = 0;
for(int i = 7; i <= n; i++) {
string num = to_string(i);
if(num.front() == '7' && num.back() == '7') {
ans++;
}
}
return ans;
}
};
2、
给定一个整数序列 a 以及2个整数x,k。
求出有多少个区间[L, R](L ≤ R),使得该区间中恰好有k个ai(L ≤ i ≤ R)满足ai能被x整除。
补充说明
数据范围:length(a), x, k(1 ≤ length(a), x ≤ 105,
0 ≤ k ≤ 105)
序列a里的每个元素ai(1 ≤ ai ≤ 105)。
示例1
输入:
[1,2,3,4],2,1
输出:
6
说明
总共有6个区间,满足恰好有1个数被2整除。
[1,2],[1,3],[2,2],[2,3],[3,4],[4,4] 。
C++ 实现代码
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param a int整型vector
* @param x int整型
* @param k int整型
* @return long长整型
*/
long long kinterval(vector<int>& a, int x, int k) {
// write code here
// int n = a.size();
// long long ans = 0;
// for(int left = 0; left < n; left++) {
// long long res = 0;
// for(int right = left; right < n; right++) {
// if(a[right] % x == 0) {
// res++;
// }
// if(res == k) {
// ans++;
// }
// }
// }
// return ans;
int n = a.size();
vector<int> pre(n + 1, 0);
for(int i = 1; i <= n; i++) {
pre[i] = pre[i - 1] + (a[i - 1] % x == 0? 1: 0);
}
unordered_map<int, int> preCnt;
long long ans = 0;
for(int i = 0; i <= n; i++) {
int target = pre[i] - k;
if(preCnt.find(target) != preCnt.end()) {
ans += preCnt[target];
}
preCnt[pre[i]]++;
}
return ans;
}
};
之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!