A. 算数一

运行时间限制: 1000运行内存限制: 65536
作者: scshuanghai是否specialjudge: False

题目描述

有一个数x,将它的3倍减5,计算的结果再3倍后减5,这样反复经过n次,最后计算的结果为m。请问x是多少?
输入:为两个用空格分隔的整数n(1<n),m(0<m)。
输出:为一个整数,代表x。测试用例保证合法且均可以用int存储。

输入样例

4 691

输出样例

11

示例代码

#include<stdio.h>

int main()
{
    int n, m;
    scanf("%d %d", &n, &m);
    for (int i = 0; i < n; i++)
    {
        m += 5;
        m /= 3;
    }
    printf("%d", m);
    return 0;
}

B. 贴邮票二

运行时间限制: 1000运行内存限制: 65536
作者: scshuanghai是否specialjudge: False

题目描述

美国邮票的面值共有1, 10, 21, 34, 70, 100, 350, 1225, 1500九种(单位为美分)。现给定一个邮资的价格n(以美分为单位),如果规定所贴邮票面值总和必须等于n,请输出最少要贴几张邮票。为了简化程序,我们假设只有1, 10, 21, 34四种面值。

输入:为一个整数n。(0<n<1000)
输出:也是一个整数,为所贴邮票的张数。

输入样例

22

输出样例

2

示例代码

#include<stdio.h>

int main()
{
    int n;
    scanf("%d", &n);
    int min = 1000; 
    for (int i = 0; i <= n / 1; i++)
    {
        for (int j = 0; j <= n / 10; j++)
        {
            for (int k = 0; k <= n / 21; k++)
            {
                for (int l = 0; l <= n / 34; l++)
                {
                    if (i + 10 * j + 21 * k + 34 * l == n)
                    {
                        if (i + j + k + l < min)
                        {
                            min = i + j + k + l;
                        }
                    }
                }
            }
        }
    }
    printf("%d", min);
    return 0;
}

C. 17进制

运行时间限制: 1000运行内存限制: 65536
作者: scshuanghai是否specialjudge: False

题目描述

请写一段程序将17进制数转换为10进制。

输入:为一个只包含小写字母的字符串(其中a代表17进制的0,b代表17进制的1,以此类推直到q代表17进制的16),字符串以’\n’结束。
输出:是一个整数,转换后的10进制数。测试用例保证合法,且转换后的整数可以用int存储。

输入样例

caa

输出样例

578

示例代码

#include<stdio.h>

int main()
{
    char a;
    int sum = 0;
    scanf("%c", &a);
    while (a != '\n')
    {
        sum *= 17;
        sum += a - 'a';
        scanf("%c", &a);
    }
    printf("%d\n", sum);
    return 0;
}

D. 回文质数

运行时间限制: 1000运行内存限制: 65536
作者: scsyuanbaoku是否specialjudge: False

题目描述

因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以151是回文质数。请写一个程序来找出范围[a,b] (5≤a≤b≤100000)间的所有回文质数。
输入:只有一行,为两个整数,依次代表a,b 。
输出:每个回文质数输出一行。测试用例保证输入合法且输出至少包含一个回文质数。

输入样例

100 200

输出样例

101
131
151
181
191

示例代码

#include<stdio.h>

int sushu(int);

int main()
{
    int a, b, count = 0;
    scanf("%d %d", &a, &b);
    for (int i = 1; i <= 9; i++)
    {
        if (sushu (i) && i >= a && i <= b)
            {
                printf("%d\n", i);
                count++;
            }
    }
   for (int a3 = 0; a3 <= 9; a3++)
            {
                for (int a4 = 0; a4 <= 9; a4++)
                {
                    for (int a5 = 0; a5 <= 9; a5++)
                    {
                        if (!a3 && !a4)
                        {
                            if (sushu (a5 * 11) && a5 * 11 >= a && a5 * 11 <= b)
                            {
                                printf("%d\n", a5 * 11);
                                
                            }
                        }
                        else if (!a3)
                        {
                            if (sushu(a4 * 101 + a5 * 10) && a4 * 101 + a5 * 10 >= a && a4 * 101 + a5 * 10 <= b)
                            {
                                printf("%d\n", a4 * 101 + a5 * 10);
                                
                            }
                        }
                        else
                        {
                            if (sushu(a3 * 10001 + a4 * 1010 + a5 * 100) && a3 * 10001 + a4 * 1010 + a5 * 100 >= a && a3 * 10001 + a4 * 1010 + a5 * 100 <= b)
                            {
                                printf("%d\n", a3 * 10001 + a4 * 1010 + a5 * 100);
                            }
                        }
                    }
                }
            }
    return 0;
}

int sushu(int n)
{
    for (int i = 2; i < n; i++)
    {
        if (n % i == 0)
        {
            return 0;
        }
    }
    return 1;
}

E. 24点三

运行时间限制: 1000运行内存限制: 65536
作者: scsyuanbaoku是否specialjudge: False

题目描述

“24点”是一种扑克牌游戏。具体玩法是一副牌中抽去大小王剩下52张,任意抽取4张牌,利用四则运算把牌面上的数算成24。每张牌能且只能用一次。如5、1、7、1,可以用(5-1)×(7-1)或(5+7)×(1+1)两种方法得到。
经计算机准确计算,一副牌(54张,其中去掉两张王牌)中,任意抽取4张可有1820种不同组合,其中有458个牌组算不出24点,如1、1、1、5。

现我们将规则修改如下:1、每次是5张牌;2、只能用加法或减法,不允许用乘法和除法;3、5张牌不要求都用,但如果要用只能用一次;4、牌面点数的范围是大于等于-30且小于等于30。
现在就请你写一段程序来判断某5张牌是否能算出24点。

输入格式
第一行为一个整数T(0<T<20),代表测试数据组数。后边是T行,每行均为5个用空格分隔的整数(每个整数都大于等于-30且小于等于30),代表牌点。
输出格式
为T行,每行对应前边的T组测试数据,如果根据规则能算出24则该行输出YES,否则输出NO。

输入样例

2
6 6 6 6 6
5 5 5 5 5

输出样例

YES
NO

示例代码

#include<stdio.h>

int main()
{
    int T;
    scanf("%d", &T);
    while (T--)
    {
        int a, b, c, d, e;
        int jixu = 1;
        scanf("%d %d %d %d %d", &a, &b, &c, &d, &e);
        for (int aa = -1; aa <= 1 && jixu; aa++)
        {
            for (int bb = -1; bb <= 1 && jixu; bb++)
            {
                for (int cc = -1; cc <= 1 && jixu; cc++)
                {
                    for (int dd = -1; dd <= 1 && jixu; dd++)
                    {
                        for (int ee = -1; ee <= 1 && jixu; ee++)
                        {
                            if (a * aa + b * bb + c * cc + d * dd + e * ee == 24)
                            {
                                printf("YES\n");
                                jixu = 0;
                            }
                        }
                    }
                }
            }
        }
        if (jixu)
        {
            printf("NO\n");
        }
    }
    return 0;
}
分类: OJ代码