CSU 1340 A Sample Problem

举报
用户已注销 发表于 2021/11/19 04:29:39 2021/11/19
【摘要】 题目: Description    My girlfriend loves 7 very much, she thinks it is lucky! If an integer contains one or more 7, she will thin...

题目:


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

    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<iostream>
#include<cstring>
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,而不需要任何数学计算。

文章来源: blog.csdn.net,作者:csuzhucong,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/nameofcsdn/article/details/52177468

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。