UVA 11636-Hello World!(水题,猜结论)

UVA11636-Hello World!

Time limit: 1.000 seconds

When you ?rst made the computer to print the sentence “Hello World!”, you felt so happy, not knowing how complex and interesting the world of programming and algorithm will turn out to be. Then you did not know anything about loops, so to print 7 lines of “Hello World!”, you just had to copy and paste some lines. If you were intelligent enough, you could make a code that prints “Hello World!” 7 times, using just 3 paste commands. Note that we are not interested about the number of copy commands required. A simple program that prints “Hello World!” is shown in Figure 1. By copying the single print statement and pasting it we get a program that prints two “Hello World!” lines. Then copying these two print statements and pasting them, we get a program that prints four “Hello World!” lines. Then copying three of these four statements and pasting them we can get a program that prints seven “Hello World!” lines (Figure 4). So three pastes commands are needed in total and Of course you are not allowed to delete any line after pasting. Given the number of “Hello World!” lines you need to print, you will have to ?nd out the minimum number of pastes required to make that program from the origin program shown in Figure 1.


Input
The
input ?le can contain up to 2000 lines of inputs. Each line contains an
integer N (0 < N < 10001) that denotes the number of “Hello
World!” lines are required to be printed. Input is terminated by a line containing a negative integer.
Output
For
each line of input except the last one, produce one line of output of
the form ‘Case X: Y ’ where X is the serial of output and Y denotes the
minimum number of paste commands required to make a program that prints N
lines of “Hello World!”.
Sample Input
2

10

-1
Sample Output
Case 1: 1

Case 2: 4

题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2683

题目大意:给定n行,求要复制的次数!

分析:这样题意可能比较难理解,(我英文不太好)我是看样例猜答案的,输入的数很有规律,比如样例1,输入2,输出为1,我就这样想,2/2=1,很有道理,再看样例2,输入10,输出按照前面的想法应该是3才对啊,10/2=5,5/2=2,2/2=1->3,稍微拿脑袋想一想就知道不对了,如果向上取整的话是不是就是正解呢,样例1->(2+1)/2=1,样例2->(10+1)/2=5,(5+1)/2=3,(3+1)/2=2,(2+1)/2=1,刚好就等于4,输入小于0的数进行特判即可,于是我就进行了大胆的猜测题意:输入的数每次进行向上取整,求这个数需要经过多少次才能变成1!

下面给出AC代码:

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int n;
 4 int main()
 5 {
 6     int p=1;
 7     while(scanf("%d",&n)!=EOF)
 8     {
 9         if(n<0)
10             break;
11         int ans=0;
12         while(n>1)
13         {
14             ans++;
15             n=(n+1)/2;
16         }
17         printf("Case %d: %d\n",p++,ans);
18     }
19     return 0;
20 }
时间: 2024-11-08 23:25:31

UVA 11636-Hello World!(水题,猜结论)的相关文章

UVa 1586 Molar mass --- 水题

UVa 1586 题目大意:给出一种物质的分子式(不带括号),求分子量.本题中分子式只包含4种原子,分别为C.H.O.N, 原子量分别为12.01,1.008,16.00,14.01 解题思路:先实现一个从字符型的数到整型的数的转换函数,再将输入的串从头到尾扫描,遇到字母,则进一步扫描后面的数字的区间, 再调用函数进行转换,再乘以其的原子质量,最后累加到sum中即可. /* UVa 1586 Molar mass --- 水题 */ #include <cstdio> #include <

UVa 272 Tex Quotes --- 水题

题目大意:在TeX中,左引号是 ``,右引号是 ''.输入一篇包含双引号的文章,你的任务是把他转成TeX的格式 解题思路:水题,定义一个变量标记是左引号还是右引号即可 /* UVa 272 Tex Quotes --- 水题 */ #include <cstdio> #include <cstring> int main() { #ifdef _LOCAL freopen("D:\\input.txt", "r", stdin); #endi

UVa 1584 Circular Sequence --- 水题

UVa 1584 题目大意:给定一个含有n个字母的环状字符串,可从任意位置开始按顺时针读取n个字母,输出其中字典序最小的结果 解题思路:先利用模运算实现一个判定给定一个环状的串以及两个首字母位置,比较二者字典序大小的函数, 然后再用一层循环,进行n次比较,保存最小的字典序的串的首字母位置,再利用模运算输出即可 /* UVa 1584 Circular Sequence --- 水题 */ #include <cstdio> #include <cstring> //字符串s为环状,

UVa 1339 Ancient Cipher --- 水题

UVa 1339 题目大意:给定两个长度相同且不超过100个字符的字符串,判断能否把其中一个字符串重排后,然后对26个字母一一做一个映射,使得两个字符串相同 解题思路:字母可以重排,那么次序便不重要,可以分别统计两个字符串中的各个字母出现的次数,得到两个cnt[26]数组, 又由于可以进行映射,则可以直接对两个数组进行排序后判断是否相等(相当于原来相等的值的两个地方做映射) /* UVa 1339 Ancient Cipher --- 水题 */ #include <cstdio> #incl

UVa 1225 Digit Counting --- 水题

UVa 1225 题目大意:把前n(n<=10000)个整数顺次写在一起,12345678910111213...,数一数0-9各出现多少字 解题思路:用一个cnt数组记录0-9这10个数字出现的次数,先将cnt初始化为0,接着让i从1枚举到n, 对每个i,处理以活的i的每一个位置上的数,并在相应的cnt下标上+1 最后输出cnt数组即可 /* UVa 1225 Digit Counting --- 水题 */ #include <cstdio> #include <cstring

UVa 12342 Tax Calculator (水题,纳税)

今天在uva看到一个水题,分享一下. 题意:制定纳税的总额,有几个要求,如果第一个180000,不纳,下一个300000,纳10%,再一个400000,纳15%,再一个300000,纳20%,以后的纳25%,如果总额大于0但是不过2000,纳2000, 如果总金额不是整数,纳离它最近的且比它大的整数. 析:没什么可说的,算一下就行,也没坑. 代码如下: #include <bits/stdc++.h> using namespace std; const int s[] = {1180000,

UVa 11536 Smallest Sub-Array (水题, 滑动窗口)

题意:给定 n 个由0~m-1的整数组成的序列,输入 k ,问你找出连续的最短序列,使得这个序列含有1-k的所有整数. 析:这个题,很简单么,只要从头开始扫一遍就OK,时间复杂度为O(n). 代码如下: #include <cstdio> #include <string> #include <cstdlib> #include <cmath> #include <iostream> #include <cstring> #inclu

UVA 11945 Financial Management 水题

Financial Management Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=20184 Description Michael graduated of ITESO this year and finally has a job. He's making a lot of money, but somehow never seem

UVa 1644 Prime Gap (水题,暴力)

题意:给定一个数 n,求它后一个素数和前一个素数差. 析:先打表,再二分查找. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include <string> #include <cstdlib> #include <cmath> #include <iostream> #include <cstring&

UVA 10487-Closest Sums(遍历水题)

Closest Sums Input: standard input Output: standard output Time Limit: 3 seconds Given is a set of integers and then a sequence of queries. A query gives you a number and asks to find a sum of two distinct numbers from the set, which is closest to th