hdu 5703 Desert(找规律)
Posted qiqi_starsky
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu 5703 Desert(找规律)相关的知识,希望对你有一定的参考价值。
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5703
Desert
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 177 Accepted Submission(s): 141
Problem Description
A tourist gets lost in the desert with n liters of water. He drinks positive integer units of water each day.
Write a program to calculate how many different ways the tourist can drink up the water.
Write a program to calculate how many different ways the tourist can drink up the water.
Input
The first line contains the number of test cases T(T≤10) .
NextT lines
contain the number n(1≤n≤1000000) for
each test case.
Next
Output
Output consists of T lines.
Each line contains the binary number which represents number of different ways to finish up the water specified in the test case.
Each line contains the binary number which represents number of different ways to finish up the water specified in the test case.
Sample Input
1 3
Sample Output
100Hint3 liters of water can be comsumed in four different ways show in the following. 1. 1 1 1 2. 1 2 3. 2 1 4. 3 If we write 4 in binary, it‘s 100.
Source
题目大意:一杯水有n的容量,问有多少种方法可以喝完。
提示给了3的水,就有四种方法喝完:1、1 1 1 2、1 2 3、2 1 4、3综上,一共是4种方法,4转换为二进制就是100
多次找规律之后,很明显就是2的n-1次方。
解题思路:方法数根据找到的规律很好计算,但是由于n太大,2的n次方特别大。
所以我们不能先算出方法数在进行二进制转换。
多次计算发现有这个规律。2的多少次方就有多少个0,所以先输出一个1,在接着输入0的个数就可以了。
详见代码。
#include <iostream> #include <cstdio> #include <cmath> using namespace std; int main() { int t; scanf("%d",&t); while (t--) { int n; scanf("%d",&n); printf ("1"); for (int i=0;i<n-1;i++) printf ("0"); printf ("\n"); } return 0; }
以上是关于hdu 5703 Desert(找规律)的主要内容,如果未能解决你的问题,请参考以下文章