第十二届蓝桥杯B组试题答案
Posted So istes immer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第十二届蓝桥杯B组试题答案相关的知识,希望对你有一定的参考价值。
试题 G: 最少砝码
【评测用例规模与约定】
对于所有评测用例,1 ≤ N ≤ 1000000000。
思路
当砝码为1的时候,可以称出任意小于等于1的正整数重量
当砝码为1,3的时候,可以称出任意小于等于4的正整数重量
当砝码为1,3,9的时候,可以称出任意小于等于13的正整数重量
当砝码为1,3,9,27的时候,可以称出任意小于等于40的正整数重量
当砝码为1,3,9,27,81的时候,可以称出任意小于等于121的正整数重量
砝码为x个的时候,最多可以称出任意小于等于3^0+3^1+3^2+……+3^(x-1)的正整数重量
import java.util.*;
public class Main
public static void main(String[] args)
Scanner sc = new Scanner(System.in);
long n = sc.nextLong();
long ans = 0;
while(n>0)
n -= Math.pow(3, ans);
ans++;
System.out.println(ans);
试题H 杨辉三角形
【评测用例规模与约定】
对于 20% 的评测用例,1 ≤ N ≤ 10;
对于所有评测用例,1 ≤ N ≤ 1000000000。
import java.util.Scanner;
public class Main
static int n;
public static void main(String[] args)
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
if (n == 1)
System.out.println(1);
return;
for (int k = 16; ; k -- )
if (check(k)) break;
private static boolean check(int k)
long l = k * 2, r = n;
while (l < r)
long mid = l + r >> 1;
if (C(mid, k) >= n) r = mid;
else l = mid + 1;
if (C(r, k) != n) return false;
System.out.println(r * (r + 1) / 2 + k + 1);
return true;
//求组合数
private static long C(long a, long b)
long res = 1;
for (long i = a, j = 1; j <= b; i --, j ++ )
res = res * i / j;
if (res > n) return res;
return res;
以上是关于第十二届蓝桥杯B组试题答案的主要内容,如果未能解决你的问题,请参考以下文章
2021年软件类第十二届蓝桥杯第二场省赛 python组 A-E题解
2021.5.9 第十二届蓝桥杯大赛软件赛省赛第二场大学B组(个人题解)
2021软件类第十二届蓝桥杯国赛真题 Python组 A-E题解