首页 > 试题广场 >

选数

[编程题]选数
  • 热度指数:376 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
~~~~~~整数 ,计算选择  个数最多能获得多少积分。
~~~~~~计分规则:初始积分为 ,对于被选取的整数 ,如果  没选,则积分加  。

输入描述:
~~~~~~每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\le T\le 10^5\right) 代表数据组数,每组测试数据描述如下:

~~~~~~在一行上输入两个整数 n,k\ (1\le n,k\le10^{12};\ k \leq n) ,含义和题面描述一致。


输出描述:
~~~~~~对于每一组测试数据,在一行上输出一个整数,代表最多能获得的积分。
示例1

输入

2
1 1
4 2

输出

1
2

说明

第一个样例选择 ,积分为 

第二个样例一种可行方案为 ,积分为 


备注:


头像 饥饿的中国人offer多多
发表于 2025-08-28 20:43:29
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); 展开全文
头像 Silencer76
发表于 2025-08-31 16:27:58
题目链接 选数 题目描述 给定两个整数 和 。我们需要从 到 的 个整数中选择 个数。计分规则如下:对于每一个被选中的数 ,如果 没有被选中,那么积分就加一。我们的目标是求出可能得到的最大积分。 输入: 第一行一个整数 ,表示数据组数。 接下来 行,每行两个整数 和 。 输出: 展开全文
头像 爱吃香菜的雪碧也不容易
发表于 2025-09-16 10:26:43
import sys def max_score(n, k): # 最多能选择的不相邻数字数量 max_non_adjacent = (n + 1) // 2 if k <= max_non_adjacent: # 如果k小于等于最多能选择的 展开全文