HDU 2178.猜数字【分析能力练习】【读题能力联系】【8月10】

猜数字

Problem Description

A有1数m,B来猜.B每猜一次,A就说"太大","太小"或"对了" 。

问B猜n次可以猜到的最大数。

Input

第1行是整数T,表示有T组数据,下面有T行

每行一个整数n (1 ≤ n ≤ 30)

Output

猜n次可以猜到的最大数

Sample Input

2
1
3

Sample Output

1
7

哎呀妈呀,这题什么意思啊!-----第一感觉

仔细理解理解:比如数据中的3次可以最大猜到7,也就是说,7之内的数都能在3次之内猜到。这才是这个题的意思。然后分析一下:在最坏的情况下,在1到m间,你最多只要猜log2(m)+1(取整)次(二分),所以易知m=2^n-1.即猜n次,你能猜到的最大数的数为2^n-1.我们也可认为,在数1到2^n-1间,我们都可以在n次内猜出来。推导到这,代码就可以上了:

#include<cstdio>
#include<cmath>
int main(){
    int n,t;
    while(scanf("%d",&t)!=EOF){
        while(t--){
            scanf("%d",&n);
            printf("%d\n",(int)pow(2,n)-1);
        }
    }
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-25 07:01:36

HDU 2178.猜数字【分析能力练习】【读题能力联系】【8月10】的相关文章

Hdu 2178 猜数字

猜数字 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3415    Accepted Submission(s): 2458 Problem Description A有1数m,B来猜.B每猜一次,A就说"太大","太小"或"对了" . 问B猜n次可以猜到的最大数. Input 第1

HDOJ(HDU) 2178 猜数字(题意有点难理解、、、)

Problem Description A有1数m,B来猜.B每猜一次,A就说"太大","太小"或"对了" . 问B猜n次可以猜到的最大数. Input 第1行是整数T,表示有T组数据,下面有T行 每行一个整数n (1 ≤ n ≤ 30) Output 猜n次可以猜到的最大数 Sample Input 2 1 3 Sample Output 1 7 这个题目我总感觉题意没说明白,没办法.参考了一下网上的题意. 题意就是: 最多猜n次一定可以猜到1

HDU 1172.猜数字【思路转换,思维练习】【枚举】【8月8】

猜数字 Problem Description 猜数字游戏是gameboy最喜欢的游戏之一.游戏的规则是这样的:计算机随机产生一个四位数,然后玩家猜这个四位数是什么.每猜一个数,计算机都会告诉玩家猜对几个数字,其中有几个数字在正确的位置上. 比如计算机随机产生的数字为1122.如果玩家猜1234,因为1,2这两个数字同时存在于这两个数中,而且1在这两个数中的位置是相同的,所以计算机会告诉玩家猜对了2个数字,其中一个在正确的位置.如果玩家猜1111,那么计算机会告诉他猜对2个数字,有2个在正确的位

HDU 1172 猜数字(DFS)

猜数字 Time Limit:10000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Description 猜数字游戏是gameboy最喜欢的游戏之一.游戏的规则是这样的:计算机随机产生一个四位数,然后玩家猜这个四位数是什么.每猜一个数,计算机都会告诉玩家猜对几个数字,其中有几个数字在正确的位置上.比如计算机随机产生的数字为1122.如果玩家猜1234,因为1,2这两个数字同时存在于这两个

HDU 1172 猜数字(暴力)

Problem Description 猜数字游戏是gameboy最喜欢的游戏之一.游戏的规则是这样的:计算机随机产生一个四位数,然后玩家猜这个四位数是什么.每猜一个数,计算机都会告诉玩家猜对几个数字,其中有几个数字在正确的位置上. 比如计算机随机产生的数字为1122.如果玩家猜1234,因为1,2这两个数字同时存在于这两个数中,而且1在这两个数中的位置是相同的,所以计算机会告诉玩家猜对了2个数字,其中一个在正确的位置.如果玩家猜1111,那么计算机会告诉他猜对2个数字,有2个在正确的位置. 现

HDU 1172 猜数字

猜数字 题意: 计算机随机产生一个四位数,然后玩家猜这个四位数是什么.每猜一个数,计算机都会告诉玩家猜对几个数字,其中有几个数字在正确的位置上. 注意 多组输入 答案唯一,假如有多个答案,输出"Not sure" 难点在如何判断 计算机回答猜对了B个数字 , 例如 计算机输入 1234 猜对了3个数字,正确的答案是 1115 意思是 答案中存在 三个 1 ,即计算机只需要猜对有几个数字就行,每个数都能在答案中猜出全部的个数 例如 计算机输入 1112 猜对了 1个数字,正确的答案是 1

hdu - 1172 猜数字 (思维题)

http://acm.hdu.edu.cn/showproblem.php?pid=1172 这个题换一种想法,可以找出四位数中所有满足条件的数看是否只有一个. 1 #include <iostream> 2 #include <cstdio> 3 #include <cmath> 4 #include <vector> 5 #include <cstring> 6 #include <string> 7 #include <a

HDU ACM 2178 猜数字

分析:最坏情况下,在1到m间,最多只要猜log2(m)+1(取整)次,所以=>m=2^n-1.即猜n次,猜到的最大数为2^n-1.也可认为,在数1到2^n-1间,都可以在n次内猜出来. #include<iostream> #include<cmath> using namespace std; int main() { int T,n; scanf("%d",&T); while(T--) { printf("%d\n",(s

hdu acm 1028 数字拆分Ignatius and the Princess III

Ignatius and the Princess III Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 11810    Accepted Submission(s): 8362 Problem Description "Well, it seems the first problem is too easy. I will let