CSU 1340 A Sample Problem

网友投稿 557 2022-05-29

题目:

Description

My girlfriend loves 7 very much, she thinks it is lucky! If an integer contains one or more 7, she will think it is lucky too!

Input

CSU 1340 A Sample Problem

The first line has one integer T (1 <= T <= 100), means there are T test cases.

For each test case, there is only one line with an integer X (1 <= X <= 109).

Output

For each test case, if X contains one or more 7, output “Lucky” (without quotation marks), otherwise output “Unlucky” (without quotation marks).

Sample Input

4 7 11 568 17171

Sample Output

Lucky Unlucky Unlucky Lucky

HINT

我们主要通过这个题目来感受一下一个完整的ACM竞赛的题目应当是什么样的。

ACM竞赛题目本身的“格式”很明显:

第一部分是对题目的描述,会交待题目的背景,以及你需要编程完成哪些任务等等。

第二部分是对输入的约定,会告诉你题目是否有多组测试数据,每组测试数据的格式,每个参数的类型(整数,浮点数,字符串等)以及取值范围等等。

第三部分是对输出的约定,也就是你的程序应当输出哪些内容以及具体的格式是什么。

第四部分是一些样例,这些例子只是向你展示一部分测试数据以及对应的答案,目的是更好地帮助你理解题意,以及了解对输出格式的要求等。

大家也许会和我当初刚接触ACM时一样心中充满了疑问,在这里我就为大家列举几个常见的问题:

<1> 如果题目有多组数据,我们是不是也要像样例那样把所有的结果先都计算出来,然后再一起输出?

这个是没必要的,你完全可以每处理完一组数据之后就立刻将这组数据对应的结果输出出来。

但如果你是手动去敲这些样例的话,你会发现在屏幕上输入和输出是混在一起的,并不像样例那样输入和输出是分离的,这样会不会不符合要求呢?那么请看<2>,相信你的疑问就会被解答了。

<2> OJ (Online Judge)怎么知道我的程序是不是写对了?

OJ并不会去智能化地分析你的代码正确与否,而是用另一种巧妙的思路来判断你的程序是否符合要求:“喂”给你的程序一些输入数据(就像你在键盘上敲一些东西后敲回车一样),之后再将你的程序“产出”的东西(就像你在屏幕上看到的你的程序输出的东西一样)和标准的答案进行对比,如果你的程序得到的答案和标准的答案一模一样,那么就算你通过了这个题目。

因此,即使你手动输入样例时屏幕上的输入和输出是混在一起也没关系,只要你的程序“产出”的东西和标准答案一模一样就可以了。

也正是这种评判机制的关系,你不应当让程序打印一些提示语句,如“Please input two integers”等等,因为凡是你的程序输出的内容都会被拿来和标准答案进行对比,一旦输出了类似这样的题目没有要求输出的语句,就会和标准答案大相径庭了,自然就会认为你的程序是不正确的了。

值得一提的是,尽管这样的评判机制似乎并不能完美地知道你的程序究竟是不是对的(想想看为什么?),不过如果测试数据足够强大的话,“你的程序是对的”的概率就会很高很高了。

<3> 为什么我的程序通过了所有的样例,但是最后还是过不了这个题目?

题目的样例只是一小部分测试数据,目的是为了更好地帮助你理解题意,以及了解对输出格式的要求等,因此通过了样例并不能够代表能通过所有的测试数据。只有通过了所有的测试数据才能得到“Accept”,也就是通过了这个题目。

<4> 每组测试数据的答案输出完之后,是否都要换行?

是的,即使题目里面没有明确说明,我们也应该在每组测试数据的答案输出完之后再输出一个“换行”(也就是“\n”),就像样例示意的那样。

接下来我们谈谈这个题目的思路吧,相信大家应该都想到算法了:只要依次判断读入的整数的每一位是否是7就可以了。

代码:

#include #include using namespace std; char c[10]; int main() { ios_base::sync_with_stdio(false); int t; cin >> t; while (t--) { cin >> c; int f = 0; for (int i = 0; i < strlen(c); i++)if (c[i] == '7')f = 1; if (f)cout << "Lucky" << endl; else cout << "Unlucky" << endl; } return 0; }

ACM的题目就是这样,明明输入的是1个整数,但是我完全可以看成输入的就是一个个字符,只需要看每个字符是不是7,而不需要任何数学计算。

数据结构

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Shell 输入/输出重定向
下一篇:11.11上云嘉年华,华为云数据库助力客户备战业务高峰
相关文章