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

2023-09-14 18:57:36

在这里插入图片描述
码蹄集网站地址:https://www.matiji.net/exam/ojquestionlist


目录

MT1281 N的M次方

(1)题目
输入正整数N(<1500),首先计算其逆序数M(比如12逆序后是21)。然后输出N的M次方的最后3位数。


格式

输入格式: 
输入正整数N

输出格式: 
输出整型

样例1

输入格式: 
12

输出格式: 
122

(2)参考代码

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

MT1282 Disarium数

(1)题目
一个自然数,如果每一位数的位数次幂之和等于该自然数,则称之为Disarium数。

比如:89=8+9 * 9。或者135 = 1 + 3 * 3 + 5 * 5 * 5

输入一个正整数n,检查它是否为Disarium数,是则输出YES否则输出NO。不考虑0,负数或者其他特殊情况。


格式

输入格式:
输入为整型


输出格式:
是则输出YES否则输出NO

样例1

输入:
175

输出:
YES

(2)参考代码

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

MT1283 区间Disarium数

(1)题目
一个自然数,如果每一位数的位数次幂之和等于该自然数,则称之为Disarium数。

比如:89=8+99。或者135 = 1 +3 3 +5* 5* 5

输入整数区间,输出区间(含边界)内所有的Disarium数。不考虑0,负数或者其他特殊情况。


格式

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

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

样例1

输入格式:
 1 100

输出格式: 
1 2 3 4 5 6 7 8 9 89

(2)参考代码

#include<stdio.h>
#include<math.h>
int main() 
{ 
    int a, b, temp, count, Disarium;
    scanf("%d %d", &a, &b);
    for (int i=a;i<=b;i++)
    {
        temp = i;
        Disarium = 0;
        count = 0;
        while (temp)
        {
            temp /= 10;
            count++;
        }
        temp = i;
        for (int j=count;j>0;j--)
        {
            Disarium += pow((double)(temp % 10), (double)j);
            temp /= 10;
        }
        if (Disarium == i)
        {
            printf("%d ", Disarium);
        }
    }
    return 0; 
}

MT1284 快乐数

(1)题目
判断一个正整数是否是快乐数字,如果一个数字能够通过有限次快乐变换成为1,则是快乐数字。

快乐变换是对一个数字的每一位的平方数求和。例如:对于68 =6 6+88=100,

100 = 1* 1+0* 0+0*0= 1,因此68是快乐数字。输入一个正整数n,检查它是否为快乐数,是则输出YES否则输出NO。不考虑0,负数或者其他特殊情况。


格式

输入格式:
输入为整型

输出格式: 
是则输出YES,否则输出NO

样例1

输入格式: 
19

输出格式: 
YES

(2)参考代码

#include<stdio.h>
#include<math.h>
int main() 
{ 
    int n, temp, sum;
    scanf("%d", &n);
    while (1)
    {
        sum = 0;
        if (n == 1)
        {
            printf("YES");
            break;
        }
        else if (n == 4)
        {
            printf("NO");
            break;
        }
        while (n)
        {
            temp = n % 10;
            n /= 10;
            sum += pow((double)temp, 2.0);
        }
        n = sum;
    }
    return 0; 
}

MT1285 忠实数

(1)题目
如果一个数是7的幂,或者能分解成7的不同幂的和,那么这个数就叫做忠实数。 例如49=49,8=1+7, 57=1+7+49。注意1可以看成7的0次方。输入正整数N,判断它是不是忠实数,输出YES或者NO。


格式

输入格式:
输入正整数N


输出格式:
输出YES或者NO

样例1

输入:
2457

输出:
YES

备注

N 属于正常int范围

(2)参考代码

#include<stdio.h>
int main() 
{ 
    int N;
    scanf("%d", &N);
    // if (N % 7 == 0 && N != 0)
    // {
    //     printf("YES");
    // }
    // else if (N % 7 == 1)
    // {
    //     printf("YES");
    // }
    // else
    // {
    //     printf("NO");
    // }
    while (N / 7)
    {
        if (N % 7 == 0)
        {
            N /= 7;
        }
        else if (N % 7 == 1)
        {
            N = (N - 1) / 7;
        }
        else
        {
            printf("NO");
            return 0;
        }
    }
    if (N == 1)
    {
        printf("YES");
    }
    else
    {
        printf("NO");
    }
    return 0; 
}

MT1286 忠实数序列

(1)题目
如果一个数是7的幂,或者能分解成7的不同幂的和,那么这个数就叫做忠实数。 例如49=49,8=1+7, 57=1+7+49。注意1可以看成7的0次方。对忠实数进行从小到大排序得到的序列是1 7 8 49 50…等等。

输入正整数N,找到第N个忠实的数字。


格式

输入格式:
输入正整数N(N<1000)


输出格式:
输出整型

样例1

输入:
7
复制
输出:
57

(2)参考代码

#include<stdio.h>
int main() 
{ 
    int N;
    scanf("%d", &N);
    int i = 0, temp;
    while (N)
    {
        i++;
        temp = i;
        while (temp / 7)
        {
            if (temp % 7 == 0)
            {
                temp /= 7;
            }
            else if (temp % 7 == 1)
            {
                temp = (temp - 1) / 7;
            }
            else
            {
                break;
            }
        }
        if (temp == 1)
        {
            N--;
        }
    }
    printf("%d", i);
    return 0; 
}

MT1287 ASCII值

(1)题目
输入一个长度为5的数组,数组元素均在0到9之间,请编写一个函数,把奇数项元素的值加上65,偶数项元素值加上97,把新元素的值看成是ASCII值,依次输出他们对应的字符,空格分隔。


格式

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


输出格式:
输出字符,空格分隔

样例1

输入:
0 1 2 3 4 

输出:
a B c D e

(2)参考代码

#include<stdio.h>
int ASCII(int num, int i)
{
    if (i % 2 == 0)
    {
        num += 97;
    }
    else
    {
        num += 65;
    }
    return num;
}
int main() 
{ 
    int a[5];
    for (int i=0;i<5;i++)
    {
        scanf("%d", &a[i]);
    }
    for (int i=0;i<5;i++)
    {
        printf("%c ", (char)ASCII(a[i], i));
    }
    return 0; 
}

MT1288 谁在说谎

(1)题目
张三说李四在说谎,李四说王五在说谎,王五说张三和李四都在说谎。编写程序判断这三人中到底谁说的是真话,谁说的是假话?


格式

输入格式: 
无

输出格式:
 输出他们是否说谎,如样例所示。其中说谎用“told a lie”,没说谎用的是“told the truth"

样例1

输入格式: 无

输出格式:
zs told the truth.
ls told a lie.
ww told a lie.

(2)参考代码

#include<stdio.h>
int main() 
{ 
    for (int x=0;x<=1;x++)
    {
        for (int y=0;y<=1;y++)
        {
            for (int z=0;z<=1;z++)
            {
                if (((x&&!y) || (!x&&y)) && ((y&&!z) || (!y&&z)) && ((z && !x && !y) || (!z && (x+y) != 0)))
                {
                    printf("zs told %s.\n", x?"the truth":"a lie");
                    printf("ls told %s.\n", y?"the truth":"a lie");
                    printf("ww told %s.\n", z?"the truth":"a lie");
                }
            }
        }
    }
    return 0; 
}

MT1289 调和级数不等式

(1)题目
有一个调和级数不等式11<1+1/2+1/3+…+1/m<12,求满足此不等式的m,m可能有多个,输出最小的一个。


格式

输入格式:
无


输出格式:
输出为整型

样例1

输入:
无

输出:
33617

(2)参考代码

#include<stdio.h>
int main() 
{ 
    double sum = 0;
    for (int i=1;;i++)
    {
        sum += (1.0 / (double)i);
        if (sum > 11)
        {
            printf("%d", i);
            return 0;
        }
    }
    return 0; 
}

MT1290 级数

(1)题目
编写程序求级数前n项的和,其中n从键盘上输入在这里插入图片描述


格式

输入格式:
输入为整型


输出格式:
输出为实型

样例1

输入:
1

输出:
0.400000

(2)参考代码

#include<stdio.h>
#include<math.h>
int main()
{
    int n;
    scanf("%d", &n);
    double sum = 0;
    for (int i = 1; i <= n; i++)
    {
        sum += (pow(-1.0, (double)(i - 1)) * pow(2.0, (double)i)) / ((pow(2.0, (double)i) + pow(-1.0, (double)i)) * (pow(2.0, (double)(i + 1)) + pow(-1.0, (double)(i + 1))));
    }
    printf("%lf", sum);
    return 0;
}

MT1291 级数II

(1)题目
编写程序求级数前n项的和,其中n从键盘上输入在这里插入图片描述


格式

输入格式:
输入为整型


输出格式:
输出为实型

样例1

输入:
1

输出:
0.230769

(2)参考代码



MT1292 某级数

(1)题目
某级数的前两项A(1)=1、A(2)=1,以后各项有如下关系:A(n)=A(n-2)+2A(n-1)。求依次对于整数M=100、1000和10000求出对应的n值,使其满足:S(n)<M且S(n+1)≥M。这里S(n)=A(1)+A(2)+…+A(n)。


格式

输入格式:
 无

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

样例1

输入格式: 
无

输出格式: 
6 9 11

(2)参考代码

#include<stdio.h>
int main() 
{ 
    int A[100] = {1, 1}, S[100] = {1, 2};
    for (int i=2;;i++)
    {
        A[i] = A[i-2] + 2 * A[i - 1];
        S[i] = S[i - 1] + A[i];
        if (S[i-1] < 100 && S[i] >= 100)
        {
            printf("%d ", i);
        }
        else if (S[i-1] < 1000 && S[i] >= 1000)
        {
            printf("%d ", i);
        }
        else if (S[i] >= 10000)
        {
            printf("%d", i);
            break;
        }
    }
    return 0; 
}

MT1293 字母统计

(1)题目
请编写一个简单程序,从键盘输入一行字符,直到输入回车时结束。统计其中的字母个数。


格式

输入格式:
 输入字符型

输出格式: 
输出整型

样例1

输入格式:
 I have 3 cats.

输出格式: 
9

(2)参考代码

#include<stdio.h>
int main() 
{ 
    char c;
    int count = 0;
    while ((c = getchar()) != '\n')
    {
        if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'))
        {
            count++;
        }
    }
    printf("%d", count);
    return 0; 
}

MT1294 从指定位置复制

(1)题目
输入整行字符串(中间可能会有空格),将此字符串从第n个字符(从0开始计数)开始的全部字符复制成为另一个字符串并输出。不考虑不合理的输入等特殊情况。


格式

输入格式:
第一行输入字符串,第二行输入n,整型


输出格式:
输出字符串

样例1

输入:
sfdags
3

输出:
ags

样例2

输入:
Hello world
2

输出:
llo world

(2)参考代码

#include<stdio.h>
#include<string.h>
int main() 
{ 
    char a[100];
    gets(a);
    int n;
    scanf("\n%d", &n);
    for (int i=0;i<strlen(a);i++)
    {
        if (i >= n)
        {
            printf("%c", a[i]);
        }
    }
    return 0; 
}

MT1295 指定位置插串

(1)题目
存在两个字符串,实现在字符串s1中的指定位置n处(从0开始计数)插入字符串s2。若n大于s1的长度,则从s1末尾处接上s2字符串。


格式

输入格式:
第一行输入字符串s1,第二行输入正整数n,第三行输入字符串s2


输出格式:
输出字符串s1

样例1

输入:
Wendy  c++
6
hate

输出:
Wendy hate c++

(2)参考代码



MT1296 字符串替换

(1)题目
编写一个函数,把字符串中所有的you替换为we并输出。


格式

输入格式: 
输入字符串

输出格式: 
输出字符串

样例1

输入格式: 
you are the best

输出格式: 
we are the best

(2)参考代码



MT1297 位运算符

(1)题目
使用位运算符检查n以内的奇数和偶数,n的值由键盘输入


格式

输入格式: 
输入正整数n(<100)

输出格式: 
分行输出

样例1

输入格式: 5

输出格式:
0 is even
1 is odd
2 is even
3 is odd
4 is even
5 is odd

(2)参考代码

#include<stdio.h>
int main() 
{ 
    int n;
    scanf("%d", &n);
    for (int i=0;i<=n;i++)
    {
        if (i & 1)
        {
            printf("%d is odd\n", i);
        }
        else
        {
            printf("%d is even\n", i);
        }
    }
    return 0; 
}

MT1298 小码哥的烦恼

(1)题目
小码哥抱怨说:“我才发现,C语言里面居然没有二进制的输出格式符,唉,谁能帮我写个函数,实在这个功能啊?”


格式

输入格式:
输入一个十进制正整数


输出格式:
输出对应的二进制

样例1

输入:
9

输出:
1001

(2)参考代码

#include<stdio.h>
void Bin(int num)
{
    if (num / 2)
    {
        Bin(num / 2);
    }
    printf("%d", num % 2);
}
int main() 
{ 
    int n;
    scanf("%d", &n);
    Bin(n);
    return 0; 
}

MT1299 二进制

(1)题目
输入5个正整数,将他们转换成二进制输出。


格式

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


输出格式:
输出整型,每个一行。从低位往高位看,每四位空一位。

样例1

输入:
8 89 4 14 51

输出:
1000   
101 1001  
100  
1110  
11 0011

(2)参考代码

#include<stdio.h>
int main() 
{ 
    for (int i=0;i<5;i++)
    {
        int n, b[100], count = 0;
        scanf("%d", &n);
        while (n)
        {
            b[count++] = n % 2;
            n /= 2;
        }
        while (count)
        {
            if ((count - 1) % 4 == 0)
            {
                printf("%d ", b[--count]);
            }
            else
            {
                printf("%d", b[--count]);
            }
        }
        printf("\n");
    }
    return 0; 
}

MT1300 奇数校验

(1)题目
输入一个整数N,求其奇偶性。一个数字的奇偶性是指它对应二进制包含的1位的数量。如果该数字包含奇数个1,则该数字具有“奇校验”ODD;如果该数字包含偶数个1,则该数字具有“偶校验”EVEN。比如13,其二进制形式是1101,包含3个1,所以是奇校验。


格式

输入格式:
输入为整型

输出格式: 
输出为〇DD或者EVEN

样例1

输入格式: 
9

输出格式:
 EVEN

(2)参考代码

#include<stdio.h>
int main() 
{ 
    int n, N[100], count = 0;
    scanf("%d", &n);
    int count1 = 0, count0 = 0;
    while (n)
    {
        N[count++] = n % 2;
        n /= 2;
    }
    for (int i=0;i<=count;i++)
    {
        if (N[i] == 1)
        {
            count1++;
        }
    }
    if (count1 % 2 == 1)
    {
        printf("ODD");
    }
    else
    {
        printf("EVEN");
    }
    return 0; 
}

更多推荐

华为云云耀云服务器L实例评测|docker私有仓库部署手册

【软件安装版本】【集群安装(是)(否)】版本号文档编写文档审核创建日期修改日期1.0jzgjzg2023.9.13一.部署规划与架构1.规划:(集群:网络规划,服务器规划)环境:华为云云耀云服务器L实例,非集群方式网络:公网ipv4地址;内网:192.168.0.147网络需要配置安全组使用环境:内网,不适合生产环境使

如何导出数据库数据字典

1、随便找一个工程项目,在项目build.gradle配置文件添加以下依赖compilegroup:'cn.smallbun.screw',name:'screw-core',version:'1.0.5'2、刷新下载依赖3、将以下代码拷贝到工程任意Java目录ScrewDemo.javapackagecom.xxx;

区块链的使用场景和优势

区块链技术是一种基于分布式数据库、密码学和去中心化结构的新型计算模式,其具有以下应用场景和优势:应用场景:1.数字货币:比特币、以太坊等数字货币系统能够实现去中心化、快速高效的支付功能。2.数字身份认证:基于区块链的数字身份认证系统可以提高身份认证的安全性,同时保护隐私。3.供应链管理:区块链技术可以实现对物流、采购、

为什么需要工业物联网 (IIoT)?如何实施?

制造业数字化、网络化、智能化已经是大势所趋。这些特性都在改变着制造业的格局,进而影响着我们生活和工作的方式。工业物联网作为一种利用传感器、云计算、大数据和人工智能等技术,实现了工业设备、流程和服务的智能化,正逐渐成为制造业的发展趋势。本文将进一步探讨工业物联网的特征、工业物联网带来的好处以及如何实施工业物联网。什么是工

陕西省中级工程师职称评审

一.评审范围全省范围具有合法生产,经营手续的中小企业局和非公有制经济从事工程师工作专业技术人员和高技能人员,均可申报当年达到法定退休或已办退休的人员,不大参加职称评审。评审专业领域;机械,材料,冶金,电气,电子,信息通信,仪器仪表,能源动力,控制工程,计算机,自动化,人工智能,广播电视,建设,土木,水利,测绘,化工,地

【Vue.js】快速入门与工作生命周期的使用

🎬艳艳耶✌️:个人主页🔥个人专栏:《Spring与Mybatis集成整合》《springMvc使用》⛺️生活的理想,为了不断更新自己!目录​编辑1.Vue是什么2.Vue的特点及优势3.使用Vue的详细步骤3.1.导入3.2.定义边界3.创建vue实例4.Vue的基本语法4.1v-model4.2v-bind:va

Linux深度学习问题汇总

解决Ubuntu中root账户下tab失效的问题在Ubuntu中,出于安全考虑,默认情况下root用户是被禁用的。当你使用sudo或sudosu成为root用户时,有时可能会发现某些方便的功能,例如tab键自动补全,不工作。这可能是由于几个原因:缺少bash-completion包:bash-completion是一个

【重新定义matlab强大系列十三】直方图 bin 计数和分 bin 散点图

🔗运行环境:Matlab🚩撰写作者:左手の明天🥇精选专栏:《python》🔥推荐专栏:《算法研究》####防伪水印——左手の明天####💗大家好🤗🤗🤗,我是左手の明天!好久不见💗💗今天开启新的系列——重新定义matlab强大系列💗📆最近更新:2023年09月17日,左手の明天的第290篇原创博客

中尺度混凝土二维有限元求解——运行弯曲、运行光盘、运行比较、运行半圆形(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。⛳️座右铭:行百里者,半于九十。📋📋📋本文目录如下:🎁🎁🎁目录💥1概述📚2运行结果🎉3参考文献🌈4Matlab代码实现💥1概述中尺度混凝土二维有限元求解是一种常见的工程分析方法

CDH 集群离线部署、大数据组件安装与扩容详细步骤(cdh-6.3.1)

一、环境准备1、服务器配置和角色规划IP地址主机名硬件配置操作系统安装步骤10.168.168.1cm-server8C16GCentos7新建10.168.168.2agent018C16GCentos7新建10.168.168.3agent028C16GCentos7新建10.168.168.4agent038C1

MySQL数据同步&归档使用工具总结

数据迁移方式&工具总结kettel的使用dataX的使用pt-archiver的使用kettel的使用1、中文网:http://www.kettle.org.cn/2、下载地址3、使用kettle进行数据迁移3.1打开文件夹,运行spoon.bat3.2点击文件,新建转换3.3新建数据库连接,一个为源数据库,另一个为目

热文推荐