钉钉笔试简单题解
今天笔试比较照顾人,甚至于第三题还提示不建议用python,当然我用不用都是一样的,暴力2.25
第一题:模拟
注意点就是柱状图的高度是以最高的柱为准,先要求出mx
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();in.nextLine();
int[] arr = new int[n];
int mx = 0;
for(int i=0;i<n;i++){
arr[i] = in.nextInt();
mx = Math.max(mx,arr[i]);
}
char[][] ch = new char[mx][n];
for(int i=0;i<n;i++){
int a = arr[i];
int j=mx-1;
for(;j>mx-1-a;j--){
ch[j][i] = '+';
}
for(;j>=0;j--){
ch[j][i] = '-';
}
}
for(int i=0;i<mx;i++){
for(int j=0;j<n;j++){
System.out.print(ch[i][j]);
}
System.out.println();
}
}
}
第二题:模拟
就是简单的通过标志位表示当前的字母,
如果当前字母剩余长度小于等于0,那么就切换
这里会出现小于0是因为如果当前长度为0,而p[i]为-1,那么省去判定cur的值,直接cur-=1,所以会出现长度小于0
a,b,n = (int(i) for i in input().split(' '))
p = [i for i in input().split(' ')]
# print(p)
res = ''
sign = True
cur = a
for i in range(n):
res+= 'A' if sign else 'B'
cur-=1
if p[i]=='1':
if sign:
a+=1
else:
b+=1
cur+=1
elif p[i]=='-1':
if sign:
a=max(a-1,1)
else:
b=max(b-1,1)
cur-=1
if cur<=0: # 出现负数直接切换
if sign:
cur = b
sign = False
else:
cur = a
sign = True
print(res)
第三题:模拟
应该是数论相关的优化,不是正统计算机,没学过,暴力拿点分结束了
q = int(input())
res = [0]*q
MOD = 1000_000_007
for i in range(q):
ans = 0
n,k,x = (int(i) for i in input().split(' '))
factor = 1
while n>0:
cur = x%k
ans += (k-cur)*factor
factor*=k
x//=k
n-=1
res[i] = ans%MOD
for i in res:
print(i)
统计看看各位佬的成绩
#钉钉##钉钉笔试##暑期实习##暑期实习笔试##钉钉暑期##投票#