【GPLT 一阶题目集】L4-105~L4-109

目录

L4-105 冠军魔术

L4-106 判断题

L4-107 检查密码

L4-108 谷歌的招聘

L4-109 考试周


L4-105 冠军魔术

 2018年FISM(世界魔术大会)近景总冠军简纶廷的表演中有一个情节:以桌面上一根带子为界,当他将纸牌从带子的一边推到另一边时,纸牌会变成硬币;把硬币推回另一边会变成纸牌。

这里我们假设纸牌会变成等量的硬币,而硬币变成纸牌时,纸牌的数量会加倍。那么给定纸牌的初始数量,当他来回推了 N 次(来/回各算一次)后,手里拿的是纸牌还是硬币?数量是多少?

输入格式:

输入在一行里给出两个正整数,分别是纸牌的初始数量和魔术师推送的次数。这里假设初始状态下魔术师手里全是纸牌。

输出格式:

输入样例1:

3 7

输出样例1:

1 24

输入样例2:

8 4

输出样例2:

0 32

#include <stdio.h>
#include <math.h>
int main()
{
    int pai,count;
    scanf("%d %d",&pai,&count);
    if(count%2==0)
        printf("0 %.0f",pai*pow(2,count/2));
    else
        printf("1 %.0f",pai*pow(2,count/2));
    return 0;
}

注意事项:

如有疑问,欢迎提出。

L4-106 判断题

判断题的评判很简单,本题就要求你写个简单的程序帮助老师判题并统计学生们判断题的得分。

输入格式:

输入在第一行给出两个不超过 100 的正整数 N 和 M,分别是学生人数和判断题数量。第二行给出 M 个不超过 5 的正整数,是每道题的满分值。第三行给出每道题对应的正确答案,0 代表“非”,1 代表“是”。随后 N 行,每行给出一个学生的解答。数字间均以空格分隔。

输出格式:

按照输入的顺序输出每个学生的得分,每个分数占一行。

输入样例:

3 6
2 1 3 3 4 5
0 0 1 0 1 1
0 1 1 0 0 1
1 0 1 0 1 0
1 1 0 0 1 1

输出样例:

13

11

12

#inlude <stdio.h>
#include <string.h>
int main()
{
    int n,m;
    scanf("%d %d",&n,&m);
    int point[100];
    int ans[100];
    for(int i=0;i<m;i++)
    {
        int num;
        scanf("%d",&num);
        point[i]=num;
    }
    for(int i=0;i<m;i++)
    {
        int num;
        scanf("%d",&num);
        ans[i]=num;
    }
    int res=0;
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            int temp;
            scanf("%d",&temp);
            if(temp==ans[j])
                res+=point[j];
        }
        printf("%d\n",res);
        res=0;
    }
    return 0;
}

注意事项:

如有疑问,欢迎提出。

L4-107 检查密码

本题要求你帮助某网站的用户注册模块写一个密码合法性检查的小功能。该网站要求用户设置的密码必须由不少于6个字符组成,并且只能有英文字母、数字和小数点 .,还必须既有字母也有数字。

输入格式:

输入第一行给出一个正整数 N(≤ 100),随后 N 行,每行给出一个用户设置的密码,为不超过 80 个字符的非空字符串,以回车结束。

注意: 题目保证不存在只有小数点的输入

输出格式:

对每个用户的密码,在一行中输出系统反馈信息,分以下5种:

如果密码合法,输出Your password is wan mei.;
如果密码太短,不论合法与否,都输出Your password is tai duan le.;
如果密码长度合法,但存在不合法字符,则输出Your password is tai luan le.;
如果密码长度合法,但只有字母没有数字,则输出Your password needs shu zi.;
如果密码长度合法,但只有数字没有字母,则输出Your password needs zi mu.。

输入样例:

5
123s
zheshi.wodepw
1234.5678
WanMei23333
pass*word.6

输出样例:

Your password is tai duan le.
Your password needs shu zi.
Your password needs zi mu.
Your password is wan mei.
Your password is tai luan le.

#include <stdio.h>
#include <string.h>
int main()
{
    int n, len = 0;
    scanf("%d", &n);
    getchar();
    char str[100];
    for (int i = 0; i < n; i++)
    {
        gets(str);
        len = strlen(str);
        if (len < 6)
            printf("Your password is tai duan le.\n");
        else {
            int n_num = 0, n_ch = 0, n_p = 0;
            for (int j = 0; j < len; j++)
            {
                if ((str[j] >= 'a' && str[j] <= 'z') || (str[j] >= 'A' && str[j] <= 'Z'))
                    n_ch++;
                else if (str[j] >= '0' && str[j] <= '9')
                    n_num++;
                else if (str[j] == '.')
                    n_p++;
                else {
                    printf("Your password is tai luan le.\n");
                    break;
                }
                if(j==len-1)
                    if (n_ch > 0 && n_num == 0)
                        printf("Your password needs shu zi.\n");
                    else if (n_ch == 0 && n_num != 0)
                        printf("Your password needs zi mu.\n");
                    else
                        printf("Your password is wan mei.\n");
            }
        }
    }
    return 0;
}

注意事项:

如有疑问,欢迎提出。

L4-108 谷歌的招聘

2004 年 7 月,谷歌在硅谷的 101 号公路边竖立了一块巨大的广告牌(如下图)用于招聘。内容超级简单,就是一个以 .com 结尾的网址,而前面的网址是一个 10 位素数,这个素数是自然常数 e 中最早出现的 10 位连续数字。能找出这个素数的人,就可以通过访问谷歌的这个网站进入招聘流程的下一步。

自然常数 e 是一个著名的超越数,前面若干位写出来是这样的:e = 2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427427466391932003059921... 其中粗体标出的 10 位数就是答案。(即7427466391)

本题要求你编程解决一个更通用的问题:从任一给定的长度为 L 的数字中,找出最早出现的 K 位连续数字所组成的素数。

输入格式:

输入在第一行给出 2 个正整数,分别是 L(不超过 1000 的正整数,为数字长度)和 K(小于 10 的正整数)。接下来一行给出一个长度为 L 的正整数 N。

输出格式:

在一行中输出 N 中最早出现的 K 位连续数字所组成的素数。如果这样的素数不存在,则输出 404。注意,原始数字中的前导零也计算在位数之内。例如在 200236 中找 4 位素数,0023 算是解;但第一位 2 不能被当成 0002 输出,因为在原始数字中不存在这个 2 的前导零。

输入样例1:

20 5
23654987725541023819

输出样例1:

49877

输入样例2:

10 3
2468001680

输出样例2:

404

#include <stdio.h>
#include <math.h>
#include <string.h>

int trans(char str[], int n, int len)
{
    int num = 0, ji = len;
    for (int i = n; i < len + n; i++)
    {
        num += (str[i] - 48) * (int)pow(10, ji - 1);
        ji--;
    }
    return num;
}
int isPrime(int num)
{
    int res = 1;
    if (num == 1 || num == 0)
        return 0;
    for (int i = 2; i <= sqrt(num); i++)
    {
        if (num % i == 0)
        {
            res = 0;
            break;
        }
    }
    return res;
}
int main()
{
    int l, k;
    scanf("%d %d", &l, &k);
    if (k > l) //查询长度超出给定长度,直接结束
    {
        printf("404");
        return 0;
    }
    getchar();
    char str[1001];
    gets(str);
    for (int i = 0; i <= l - k; i++) //根据查询长度可知,访问下标0~l-k即可
    {
        int num = trans(str, i, k); //指定长度字符串转化为数字
        int res = isPrime(num); //判断是否为素数
        if (res) //发现素数
        {
            printf("%0*d", k, num);
            break;
        }
        else if(res==0&&i==l-k) //最后一次查询仍未找到素数
        {
            printf("404");
            break;
        }
    }
    return 0;
}

注意事项:

如有疑问,欢迎提出。

L4-109 考试周

考试周快到了,浙江大学的电子屏又调皮了…… 本题请你帮小编写一个自动倒计时的程序,对给定的日期(例如“腊八”就对应 8)和倒计时天数(例如电子屏上的“四天之后”就对应 4),自动调整公式里的分母(例如 8/2=4 里面的那个 2)。

输入格式:

输入在一行中给出两个正整数:A 是给定的日期,不超过 30;B 是倒计时天数,不超过 10。

输出格式:

在一行中输出公式 A/X=B,其中 X 是满足等式的数字,输出时保留小数点后 1 位即可。

输入样例:

8 3

输出样例:

8/2.7=3

#include <stdio.h>
int main()
{
    int a,b;
    scanf("%d %d",&a,&b);
    printf("%d/%.1f=%d",a,a*1.0/b,b);
    return 0;
}

注意事项:

如有疑问,欢迎提出。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花辞树dor

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值