最少的次数

2191: 最少的次数

Time Limit: 1 Sec  Memory Limit: 512 MB
Submit: 553  Solved: 73
[Submit][Status][BBS]

Description

这一天,成都东软学院ACM团队举办了一场游戏。游戏是这样的:

在桌上有一堆糖,其中有一颗糖与其他糖外观一模一样,但重量却明显轻。现在得知桌上共有N颗糖,还有一个天平,问最少需要多少次一定能准确的找出该糖?今天作为比赛中的你,相信这一问题应该不是什么难事,加油吧!

Input

第一行包含一个数m,表示后面有m个测试数据

第二行起共m行有一个数n,(1 <= n <= 263-1)表示糖的个数

Output

输出格式如下:

首先输出Case n: (n表示答案计数,其中Case后面包含一个空格,‘:‘后面包含一个空格,请注意!)

后面输出相应的最小次数

Sample Input

2

1

2

Sample Output

Case 1: 0

Case 2: 1

HINT

Source

2012年成都东软学院冬季ACM校赛(个人赛)

#include <stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    int t=0;
    long long m;
    while(n--)
    {
        int k=0;
        scanf("%lld",&m);
        while(m>1)
        {
            if(m%3!=0)
            m=m+(3-m%3);
            m/=3;
            k++;
        }
        printf("Case %d: %d\n",++t,k);
    }
    return 0;
}

相比2分,三分能算出更少的次数,如果是分成4份以上就成堆无法判断了!

把糖果平均分成3份,不能整除的补成能被3整除的,看它能被3除几次!能除一次,就是3份比较1次,排除掉另外三分之二的糖果!

也就是算log以3为底的m

时间: 2025-01-03 21:07:07

最少的次数的相关文章

1、对一个正整数算到1需要的最少操作次数

题1:实现一个函数,对一个正整数n,算得到1需要的最少操作次数.操作规则为:如果n为偶数,将其除以2:如果n为奇数,可以加1或减1:一直处理下去:例子:func(7) = 4,可以证明最少需要4次运算n = 7n-1 6n/2 3n-1 2n/2 1 要求:实现函数(实现尽可能高效) int func(unsign int n):n为输入,返回最小的运算次数.给出思路(文字描述),完成代码,并分析你算法的时间复杂度. java源程序: package bfgy.lab.work; import 

数据结构实验3(飞机最少环城次数问题)

使用图算法解决应用问题: 设有n个城市, 编号为0 ~ n - 1, m条航线的起点和终点由用户输入提供. 寻找一条换乘次数最少的线路方案. 使用有向图表示城市间的航线, 只要两城市之间有航班, 则图中这两点间存在一条权为1的边. 用Dijkstra算法实现求最少换乘次数. 在MGraph类中增加Choose函数以及Dijkstra函数即可. 实现代码: #include "iostream" #include "cstdio" #include "cst

最少乘法次数

最少乘法次数 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 给你一个非零整数,让你求这个数的n次方,每次相乘的结果可以在后面使用,求至少需要多少次乘.如24:2*2=22(第一次乘),22*22=24(第二次乘),所以最少共2次: 输入 第一行m表示有m(1<=m<=100)组测试数据: 每一组测试数据有一整数n(0<n<=10000); 输出 输出每组测试数据所需次数s; 样例输入 3234 样例输出 122 最少乘法次数

最少乘法次数 NYOJ 46

1 #include<stdio.h>//最少乘法次数(46) 2 int main() 3 { 4 int i,x,m; 5 scanf("%d",&x); 6 while(x--){ 7 scanf("%d",&m); 8 i=0; 9 while(m!=1){ 10 if(m%2==1){ 11 i+=2; 12 } 13 else i+=1; 14 m/=2; 15 } 16 printf("%d\n",i);

广度优先搜索-最少转机次数

当你和家人一起去海南旅游,可是你的城市并没有直接到达海南的飞机,但是你已经搜集了很多航班的信息,现在你希望找到一种乘坐方式,使得转机次数最少 如何解决呢? 假如你的城市在1号城市,海南在5号城市:现有如下关系: 如何求得1号城市到5号城市的最少转机次数呢?此时就用到了本次讲解的内容,广度优先搜索! 作图的问题首先我们应该用邻接矩阵或者二维数组来存取顶点之间的关系. 广度优先搜索需要用队列来存储每次扩展的关系. 首先将1号城市入队,通过1号城市我们可以扩展出2号和3号城市,2号城市又可以扩展出3号

正整数n,算得到1需要的最少操作次数

实现一个函数,对一个正整数n,算得到1需要的最少操作次数:如果n为偶数,将其除以2:如果n为奇数,可以加1或减1:一直处理下去.例子:ret=func(7);ret=4,可以证明最少需要4次运算n=7n--6n/2 3n/2 2n++1要求:实现函数(实现尽可能高效)int func(unsign int n):n为输入,返回最小的运算次数.给出思路(文字描述),完成代码,并分析你算法的时间复杂度.请列举测试方法和思路. -------------------------------------

NYIST 46 最少乘法次数

最少乘法次数 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 给你一个非零整数,让你求这个数的n次方,每次相乘的结果可以在后面使用,求至少需要多少次乘.如24:2*2=22(第一次乘),22*22=24(第二次乘),所以最少共2次: 输入 第一行m表示有m(1<=m<=100)组测试数据:每一组测试数据有一整数n(0<n<=10000); 输出 输出每组测试数据所需次数s; 样例输入 3 2 3 4 样例输出 1 2 2 上传者 李剑锋 解题:快速幂.

LeetCode:最少移动次数使得数组元素相等||【462】

LeetCode:最少移动次数使得数组元素相等||[462] 题目描述 给定一个非空整数数组,找到使所有数组元素相等所需的最小移动数,其中每次移动可将选定的一个元素加1或减1. 您可以假设数组的长度最多为10000. 例如: 输入: [1,2,3] 输出: 2 说明: 只有两个动作是必要的(记得每一步仅可使其中一个元素加1或减1): [1,2,3] => [2,2,3] => [2,2,2] 题目分析 一个直观的理解是这样的,如果我们只有两个数字的话,那么我们使得他们变成相等元素的最少步数是多

Leetcode 462.最少移动次数使数组元素相等

最少移动次数使数组元素相等 给定一个非空整数数组,找到使所有数组元素相等所需的最小移动数,其中每次移动可将选定的一个元素加1或减1. 您可以假设数组的长度最多为10000. 例如: 输入: [1,2,3] 输出: 2 说明: 只有两个动作是必要的(记得每一步仅可使其中一个元素加1或减1): [1,2,3] => [2,2,3] => [2,2,2] 排序之后,从两边往中间走,最大和最小之间的差距,是一定要填补上的,不管+1 还是 -1,所以最后都等于中位数. 1 import java.uti