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

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


目录

MT1081 x+y的和

(1)题目
给定一个正整数n,求满足floor(n/x)=y的x和y的和。不考虑负数,0或者其他特殊情况。比如输入5,则(x, y)的组合可以有:(1, 5), (2, 2), (3, 1), (4, 1), (5, 1),那么, 1 + 5 + 2 + 2 + 3 + 1 + 4 + 1 + 5 + 1 = 6 + 4 + 4 + 5 + 6 = 25。


格式

输入格式:
输入为整型


输出格式:
输出为整型

样例1

输入:
5

输出:
25

(2)参考代码

#include<stdio.h>
int main() 
{ 
    int n, x, y, sum = 0;
    scanf("%d", &n);
    for (x=1;x<=n;x++)
    {
        y = n / x;
        sum += x + y;
    }
    printf("%d\n", sum);
    return 0; 
}

MT1082 x-y的和

(1)题目
给定一个正整数n,求满足floor(n/x)=y的x和y的差之和。x,y不考虑负数,0或者其他特殊情况。比如输入5,则(x, y)的组合可以有:(1, 5), (2, 2), (3, 1), (4, 1), (5, 1),那么, 1 - 5 + 2 - 2 + 3 - 1 + 4 - 1 + 5 - 1 = -4 + 0 + 2 + 3 + 4 = 5。


格式

输入格式:
输入为整型


输出格式:
输出为整型

样例1

输入:
5

输出:
5

(2)参考代码

#include<stdio.h>
int main() 
{ 
    int n, x, y, sum = 0;
    scanf("%d", &n);
    for (x=1;x<=n;x++)
    {
        y = n / x;
        sum += x - y;
    }
    printf("%d\n", sum);
    return 0; 
}

MT1083 向下取整

(1)题目
输入正整数N,求N的立方根。向下取整后输出,输出最小列宽为3列。


格式

输入格式:
输入正整数N


输出格式:
输出整型

样例1

输入:
3
复制
输出:
  1

(2)参考代码

#include<stdio.h>
#include<math.h>
int main() 
{ 
    double N;
    scanf("%lf", &N);
    printf("%3d\n", (int)pow(N, 1.0/3.0));
    return 0; 
}

MT1084 k次方根

(1)题目
输入正整数N和K。找出整数M,使得M的K次方根的整数部分是N。输出这样的M有多少个。比如N = 3,K = 2,则9,10,11,12,13,14,15的平方根都是3。不考虑不合理的输入等特殊情况。


格式

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

输出格式:
 输出整型

样例1

输入格式: 
2 3

输出格式: 
19

(2)参考代码

#include<stdio.h>
#include<math.h>
int main() 
{ 
    int N, K, min_M, max_M;
    scanf("%d %d", &N, &K);
    min_M = pow(N, K);
    max_M = pow(N+1, K);
    printf("%d\n", max_M-min_M);
    return 0; 
}

MT1085 分期付款

(1)题目
请编写一个简单程序,使用以下公式计算每月分期付款:
在这里插入图片描述
其中:
p=本金
r=每月利率
n=分期付款多少个月

如果年利率为R%,则使用以下公式计算月利率:
Rate ® = R/(12*100)


格式

输入格式:
输入本金、年利率、多少个月,double型,空格分隔


输出格式:
输出double型,保留1位小数

样例1

输入:
1000000 7 120

输出:
11610.8

(2)参考代码

#include<stdio.h>
#include<math.h>
int main() 
{ 
    double p, r, n, EMI, R;
    scanf("%lf %lf %lf", &p, &R, &n);
    r = R / (12 * 100);
    EMI = p * r * pow(1+r, n) / (pow(1+r, n) - 1);
    printf("%.1lf", EMI);
    return 0; 
}

MT1086 公里转换为米

(1)题目
请编写一个简单程序,实现将公里(km)转换为米(m)的转换。


格式

输入格式:
输入实型


输出格式:
输出实型, 保留2位小数

样例1

输入:
6.427

输出:
6.43公里=6427.00米

(2)参考代码

#include<stdio.h>
int main() 
{ 
    double x;
    scanf("%lf", &x);
    printf("%.2lf公里=%.2lf米", x, 1000 * x);
    return 0; 
}

MT1087 温度转换

(1)题目
请编写一个简单程序,实现以摄氏度为单位的温度转换为华氏度,不考虑不合理的输入或是溢出等特殊情况。


格式

输入格式:
输入实型 


输出格式:
输出实型,保留2位小数,如样例所示。

样例1

输入:
37

输出:
37.00 C=98.60 F

(2)参考代码

#include<stdio.h>
int main() 
{ 
    double C;
    scanf("%lf", &C);
    printf("%.2lf C=%.2lf F", C, 9*C/5+32);
    return 0; 
}

MT1088 温度对照

(1)题目
输出华氏温度F(-50<=F<200)和摄氏温度C对照表,其计算公式为C=9(F−32)/5。不考虑非法输入等特殊情况。


格式

输入格式:
输入华氏温度F为整型


输出格式:
输出摄氏温度C为实型

样例1

输入:
-50

输出:
-147.600000

(2)参考代码

#include<stdio.h>
int main() 
{ 
    double F;
    scanf("%lf", &F);
    printf("%lf", 9*(F-32)/5);
    return 0; 
}

MT1089 整理玩具

(1)题目
宝宝在整理自己的N个玩具(N<=10),有的抽屉放2个玩具,有的放1个。统计玩具可以多少种方式整理好。注:宝宝分不清抽屉的顺序,所以{1 2 1},{2 1 1},{1 1 2},这样的放置方式被宝宝认为是相同的。


格式

输入格式: 
输入正整数N

输出格式: 
输出整数

样例1

输入格式:
 4

输出格式:
 3

(2)参考代码

#include<stdio.h>
int main()
{
    int N;
    scanf("%d", &N);
    printf("%d", N / 2 + 1);
    return 0;
}

MT1090 卡罗尔序列

(1)题目
卡罗尔数是其值满足4n–2(n+1)–1的整数(n为正整数)。由卡罗尔数组成的序列叫卡罗尔序列:-1, 1, 3, 5, 7…输入正整数N,编写函数,输出第N个卡罗尔数。


格式

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


输出格式:
输出整型

样例1

输入:
4

输出:
5

(2)参考代码

#include<stdio.h>
int main() 
{ 
    int N;
    scanf("%d", &N);
    printf("%d", 4*N - 2*(N+1) - 1);
    return 0; 
}

MT1091 合并||

(1)题目
输入两个两位数的正整数a、b,编写程序将a、b合并形成一个整数放在c中,合并的方式是:将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的十位和千位上,输出c的结果。


格式

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

输出格式: 
输出整型

样例1

输入格式: 
12 34

输出格式: 
4132

(2)参考代码

#include<stdio.h>
int main() 
{ 
    int a, b, z1, z2, z3, z4, c;
    scanf("%d %d", &a, &b);
    z1 = a / 10;
    z2 = a % 10;
    z3 = b / 10;
    z4 = b % 10;
    c = z1 * 100 + z2 * 1 + z3 * 10 + z4 * 1000;
    printf("%d\n", c);
    return 0; 
}

MT1092 非常大的N

(1)题目
编写程序求
在这里插入图片描述


格式

输入格式: 
输入为正整数

输出格式: 
输出为浮点型(保留六位小数)。

样例1

输入格式: 
10001

输出格式: 
50.383855


(2)参考代码

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

MT1093 序列

(1)题目
有一个序列1,3,6,10,15,21…,请找出它的规律,输入整数N,输出第N项。不考虑负数,0或者其他特殊情况。


格式

输入格式: 
输入为整型

输出格式: 
输出为整型

样例1

输入格式:
 4

输出格式: 
10

(2)参考代码

#include<stdio.h>
int main() 
{ 
    int N, i = 1, j = 1;
    scanf("%d", &N);
    if (N % 2 == 0)
    {
        printf("%d", N/2*(N+1));
    }
    else
    {
        printf("%d", (N+1)/2*N);
    }
    return 0; 
}

MT1094 AP数列

(1)题目
输入AP数列(正整数)的前两项A1、A2和n。输出序列的第n项。不考虑负数,0或者其他特殊情况。


格式

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

输出格式: 
输出为整型

样例1

输入格式: 
2 3 4

输出格式:
 5

(2)参考代码

#include<stdio.h>
int main() 
{ 
    int A1, A2, n, d;
    scanf("%d %d %d", &A1, &A2, &n);
    d = A2 - A1;
    printf("%d", A1 + (n - 1) * d);
    return 0; 
}

MT1095 GP数列

(1)题目
输入GP数列(正整数)的前两项A1、A2和n。输出序列的第n项。不考虑负数,0或者其他特殊情况。


格式

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

输出格式: 
输出为整型

样例1

输入格式:
1 3 4

输出格式: 
27

(2)参考代码

#include<stdio.h>
#include<math.h>
int main() 
{ 
    int A1, A2, n;
    double q;
    scanf("%d %d %d", &A1, &A2, &n);
    q = A2 / A1;
    printf("%d", (int)(A1 * pow(q, n-1)));
    return 0; 
}

MT1096 三角形斜边

(1)题目
假定直角三角形的斜边是固定长度的,输入三角形的最大可能面积,输出斜边的长度。比如最大面积为25的直角三角形,斜边的长度是10。不考虑负数,0或者其他特殊情况。不考虑溢出或者超出数据范围的情况。


格式

输入格式:
输入为整型


输出格式:
输出为整型

样例1

输入:
21

输出:
9

(2)参考代码

#include<stdio.h>
#include<math.h>
int main() 
{ 
    double s;
    scanf("%lf", &s);
    printf("%d\n", (int)sqrt(4 * s));
    //printf("%d\n", sqrt(4 * s));
    //输出结果为1
    return 0; 
}

MT1097 小码哥的生日

(1)题目
小码哥过生日,妈妈给她买了一个很大的蛋糕,小码哥开始给朋友们分蛋糕,如果切n刀,最多可以分给多少小朋友呢?每个朋友一块蛋糕。不考虑负数,0或者其他特殊情况。n从键盘输入。


格式

输入格式:
输入为整型


输出格式:
输出为整型

样例1

输入:
4

输出:
11

(2)参考代码

#include<stdio.h>
int main() 
{ 
    int N;
    scanf("%d", &N);
    printf("%d", N * (N + 1) / 2 + 1);
    return 0; 
}

MT1098 完全平方数

(1)题目
输入一个正整数n,检查它是否为完全平方数。不考虑0,负数或者其他特殊情况。


格式

输入格式: 
输入为整型

输出格式: 
输出为YES或者NO

样例1

输入格式:
35

输出格式:
NO

(2)参考代码

#include<stdio.h>
int main() 
{
    int n, i;
    scanf("%d", &n);
    for (i=1;i<=n;i++)
    {
        if (i * i == n)
        {
            printf("YES");
            return 0;
        }
    }
    printf("NO");
    return 0; 
}

MT1099 个人所得税

(1)题目
将个人所得税算法定义为宏。个人所得税计算公式为︰应纳税所得额sx税率–速算扣除数。不考虑不合理的输入或是溢出等特殊情况。税率如下表:在这里插入图片描述


格式

输入格式:
输入为整型

输出格式:
输出为整型

样例1

输入格式:
500

输出格式:
25

(2)参考代码

#include<stdio.h>
#define tax(s, rate, k) ((s)*(rate)-(k))
int main() 
{ 
    int s, k;
    double rate;
    scanf("%d", &s);
    if (s<=500)
    {
        rate = 0.05;
        k = 0;
        printf("%d", (int)tax(s, rate, k));
    }
    else if (500<s && s<=2000)
    {
        rate = 0.10;
        k = 25;
        printf("%d", (int)tax(s, rate, k));
    }
    else if (2000<s && s<=5000)
    {
        rate = 0.15;
        k = 125;
        printf("%d", (int)tax(s, rate, k));
    }
    else if (5000<s && s<=20000)
    {
        rate = 0.20;
        k = 375;
        printf("%d", (int)tax(s, rate, k));
    }
    else if (20000<s && s<=40000)
    {
        rate = 0.25;
        k = 1375;
        printf("%d", (int)tax(s, rate, k));
    }
    else if (40000<s && s<=60000)
    {
        rate = 0.30;
        k = 3375;
        printf("%d", (int)tax(s, rate, k));
    }
    else if (60000<s && s<=80000)
    {
        rate = 0.35;
        k = 6375;
        printf("%d", (int)tax(s, rate, k));
    }
    else if (80000<s && s<=100000)
    {
        rate = 0.40;
        k = 10375;
        printf("%d", (int)tax(s, rate, k));
    }
    else
    {
        rate = 0.45;
        k = 15375;
        printf("%d", (int)tax(s, rate, k));
    }
    return 0; 
}

MT1100 带参数的宏

(1)题目
请编写一个简单程序,把f(x)=(x*x)定义成带参数的宏,计算f(9)/f(6)并输出结果。


格式

输入格式:
无


输出格式:
输出为实型

样例1

输入:
无

输出:
2.250000

(2)参考代码

#include<stdio.h>
#define f(x) ((x)*(x))
int main() 
{
    printf("%lf\n", f(9.0)/f(6.0));
    return 0; 
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

玥轩_521

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

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

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

打赏作者

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

抵扣说明:

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

余额充值