算法竞赛入门【码蹄集新手村600题】(MT1240-1260)C语言(三)

简介: 算法竞赛入门【码蹄集新手村600题】(MT1240-1260)C语言(三)

MT1253 区间自除数

(1)题目

自除数是可以被它包含的每一位数除尽的数。例如128,可以被1,2和8整除。自除数位数中不包含0。输入整数区间,输出区间(含边界)内所有的自除数。不考虑0,负数或者其他特殊情况。


格式

输入格式: 
输入为整型,空格分隔
输出格式: 
输入出整型,空格分隔

样例1

输入格式: 
1 19
输出格式: 
1 2 3 4 5 6 7 8 9 11 12 15

(2)参考代码

#include<stdio.h>
int main() 
{ 
    int a, b, temp, flag;
    scanf("%d %d", &a, &b);
    for (int i=a;i<=b;i++)
    {
        temp = i;
        flag = 1;
        while (temp)
        {
            if (temp % 10 == 0 || i % (temp % 10) != 0)
            {
                flag = 0;
                break;
            }
            temp /= 10;
        }
        if (flag == 1)
        {
            printf("%d ", i);
        }
    }
    return 0; 
}

MT1254 最大自除数

(1)题目

自除数是可以被它包含的每一位数除尽的数。例如128,因为可以被1,2 和8整除。自除数不包含 0。输入整数区间,输出区间(含边界)内最大自除数。不考虑0,负数或者其他特殊情况。


格式

输入格式:
输入为整型,空格分隔
输出格式:
输出为整型

样例1

输入:
1 20
输出:
15

(2)参考代码

#include<stdio.h>
int main() 
{ 
    int a, b, temp, flag;
    scanf("%d %d", &a, &b);
    for (int i=b;i>=a;i--)
    {
        temp = i;
        flag = 1;
        while (temp)
        {
            if (temp % 10 == 0 || i % (temp % 10) != 0)
            {
                flag = 0;
                break;
            }
            temp /= 10;
        }
        if (flag == 1)
        {
            printf("%d ", i);
            break;
        }
    }
    return 0; 
}

MT1255 最小自除数

(1)题目

自除数是可以被它包含的每一位数除尽的数。例如128,因为可以被1,2 和8整除。自除数不包含 0。输入整数区间,输出区间(含边界)内最小自除数。不考虑0,负数或者其他特殊情况。


格式

输入格式:
输入为整型,空格分隔
输出格式:
输出为整型 

样例1

输入:
10 21
输出:
11

(2)参考代码

#include<stdio.h>
int main() 
{ 
    int a, b, temp, flag;
    scanf("%d %d", &a, &b);
    for (int i=a;i<=b;i++)
    {
        temp = i;
        flag = 1;
        while (temp)
        {
            if (temp % 10 == 0)
            {
                flag = 0;
                break;
            }
            if ((i % (temp % 10)) != 0)
            {
                flag = 0;
            }
            temp /= 10;
        }
        if (flag == 1)
        {
            printf("%d\n", i);
            break;
        }
    }
    return 0; 
}

MT1256 最小数

(1)题目

给定两个整数N和M。找出可被M整除的最小数K(大于N),输出K,最小列宽为3。


格式

输入格式:
输入正整数N和M
输出格式:
输出整型

样例1

输入:
25 13
输出:
 26

备注

本题中,K<10000

(2)参考代码

#include<stdio.h>
int main() 
{ 
    int N, M;
    scanf("%d %d", &N, &M);
    for (int i=N+1;;i++)
    {
        if (i % M == 0)
        {
            printf("%3d", i);
            break;
        }
    }
    return 0; 
}

MT1257 被3整除的五位数

(1)题目

统计个位是5但能被3整除的五位数有多少个,输出结果。


格式

输入格式:
输出格式:
输出整型 

样例1

输入:
输出:
3000

(2)参考代码

#include<stdio.h>
int main() 
{ 
    int x = 3;
    int count = 0;
    for (int i = 10000;i<=99999;i++)
    {
        if (i % x == 0 && i % 10 == 5)
        {
            count++;
        }
    }
    printf("%d\n", count);
    return 0; 
}

MT1258 特殊整数

(1)题目

输入正整数m和n,找到包含m但不能被m整除的n位整数,统计这样的n位整数有多少个。本题不考虑不合理的输入或者溢出等特殊情况。


格式

输入格式: 
输入整型,空格分隔。
输出格式: 
输出整型

样例1

输入格式: 
7 5
输出格式: 
32152

(2)参考代码

#include<stdio.h>
#include<math.h>
int main() 
{ 
    int m, n, temp, flag, count = 0;
    scanf("%d %d", &m, &n);
    int num = pow(10.0, (double)n); 
    for (int i=num/10;i<=num-1;i++)
    {
        temp = i;
        flag = 0;
        while (temp)
        {
            if (temp % 10 == m)
            {
                flag = 1;
                break;
            }
            temp /= 10;
        }
        if (flag == 1 && i % m != 0)
        {
            count++;
        }
    }
    printf("%d", count);
    return 0; 
}

MT1259 统计哈沙德数

(1)题目

如果一个数字可被其数字之和整除,则称该数字为哈沙德数,输入一个大于9的正整数N,判断统计10到N之间(包含N)有多少个哈沙德数,输出结果。


格式

输入格式: 
输入整型
输出格式: 
输出整型

样例1

输入格式: 
30
输出格式:
 8

(2)参考代码

#include<stdio.h>
int main() 
{ 
    int N, temp, sum, count = 0;
    scanf("%d", &N);
    for (int i=10;i<=N;i++)
    {
        temp = i;
        sum = 0;
        while (temp)
        {
            sum += temp % 10;
            temp /= 10;
        }
        if (i % sum == 0)
        {
            count++;
        }
    }
    printf("%d", count);
    return 0; 
}

MT1260 袋鼠躲猫猫

(1)题目

两只袋鼠在一个总长L米的圆环上躲猫猫。假定环上某一点为坐标原点0,袋鼠宝宝的出发坐标是x,袋鼠妈妈出发坐标是y,单位是米,宝宝一小时能跳a次,妈妈一小时跳b次,假定他们每一跳的距离都是1米,求多少小时后宝宝和妈妈才能见面。如果无法见面则输出-1。x,y, a,b,L都属于正常int范围。“见面”以每小时结束时刻,两只袋鼠的落点相同为准。


格式

输入格式: 
输入5个正整数x,y, a,b,L,空格分隔。其中x不等于y。
输出格式:
输出整型

样例1

输入格式: 
1 2 3 4 5
输出格式: 
4

(2)参考代码

#include<stdio.h>
int main()
{
    int x, y, a, b, l, time = 1;
    scanf("%d %d %d %d %d", &x, &y, &a, &b, &l);
    if (a == b)
    {
        printf("-1");
        return 0;
    }
    while ((x + a) % l != (y + b) % l)
    {
        x = (x + a) % l;
        y = (y + b) % l;
        time++;
    }
    printf("%d", time);
    return 0;
}
目录
相关文章
|
1天前
|
存储 自然语言处理 编译器
振南技术干货集:振南当年入门C语言和单片机的那些事儿(3)
振南技术干货集:振南当年入门C语言和单片机的那些事儿(3)
|
1天前
|
算法 C语言 人工智能
|
1天前
|
算法 C语言
C语言易混淆、简单算法、结构体题目练习、常见关键字总结-2
C语言易混淆、简单算法、结构体题目练习、常见关键字总结
|
1天前
|
算法 编译器 API
C语言易混淆、简单算法、结构体题目练习、常见关键字总结-1
C语言易混淆、简单算法、结构体题目练习、常见关键字总结
|
1天前
|
机器学习/深度学习 算法 C语言
【C言专栏】递归算法在 C 语言中的应用
【4月更文挑战第30天】本文介绍了递归算法在C语言中的应用,包括基本概念(通过调用自身解决子问题)、特点(调用自身、终止条件、栈空间)和实现步骤(定义递归函数、分解问题、设置终止条件、组合解)。文中通过阶乘计算和斐波那契数列两个案例展示了递归的使用,强调了递归可能导致的栈溢出问题及优化需求。学习递归有助于理解和应用“分而治之”策略。
|
1天前
|
存储 机器学习/深度学习 算法
|
1天前
|
编译器 C语言
函数深入解析(C语言基础入门)
函数深入解析(C语言基础入门)
|
1天前
|
C语言
数组深入剖析(C语言基础入门)
数组深入剖析(C语言基础入门)
|
1天前
|
算法 搜索推荐 C语言
C语言用流程图表示算法
C语言用流程图表示算法
23 0
|
1天前
|
算法 C语言 芯片
振南技术干货集:振南当年入门C语言和单片机的那些事儿(1)
振南技术干货集:振南当年入门C语言和单片机的那些事儿(1)