序列操作
难度:黄金
○时间限制:1秒
巴占用内存:128M
一个共有n个数的单调非递减数列(每个数都是正整数),还有一个整数
target,每轮操作可以让数列中满足以下两个要求的数+1:
1.该数比target小;
2.该数不等于它后面的那个数;
特别地,最后一个数默认满足要求2。
你的任务是求出最小的操作数m,使得第m轮操作后,该数列中的所有数都等
于target(n,target≤100,并且保证数列中任何一个数小于target)。
import java.util.Scanner;
import java.util.*;
class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
// code here
int n = input.nextInt();
int target = input.nextInt();
int ans = 0;
int[] a = new int[110];
for (int i = 0; i < n; i++) {
a[i] = input.nextInt();
}
while (a[0] != target) {
for (int i = 0; i < n; i++)
if (a[i] < target && a[i] != a[i + 1])
a[i]++;
ans++;
}
System.out.println(ans);
input.close();
}
}
一秒成零
难度:白银
0时间限制:1秒
巴占用内存:128M
给定一个正整数n,请写一个函数Steps,将n通过以下操作变成0,并且返
回操作次数。
n为偶数,则n=n/2;
n为奇数,则n=m一1。
import java.util.Scanner;
import java.util.*;
class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
// code here
int m= 0;
int n = input.nextInt();
while (n != 0){
if(n%2 ==0){
n = n/2;
m++;
}else{
n = n-1;
m++;
}
}
System.out.println(m);
input.close();
}
}