c语言n次方怎么输入_剑指信奥 | C 语言之信奥试题详解(二)

7cf279febc37f1ef85a875741329e57b.png

趣乐博思剑指信奥系列

趣乐博思剑指信奥系列,专门针对全国青少年信息学奥林匹克联赛 NOIP 而开展的专业教育方案。开设的课程有 C 语言基础,C++ 语言基础,算法设计入门与进阶,经典试题分析与详解等系列课程。面向10 - 16 岁少儿的编程教育,培养扎实的 C++ 语言基础,灵活运用算法的能力,分析解决问题的能力。

剑指信奥 | C 语言之信奥试题详解(二)

上次课的思考题

这个六位数要连续除三个数,结果一定是整数吗?如果不是的话,输出 %d 是否有问题?

还记得公式吗:

六位数 = 三位数 * 1000 + 三位数

如果提取一下公因式就变成了:

六位数 = 三位数 * (1000 + 1)

进而:

六位数 = 三位数 * 1001

而:

7 * 11 * 13 = 1001

所以最后的结果就是三位数本身!

No. 1 填充矩形 ?

题目

题目描述

已知矩形的大小为 n × m,现用 a × a 的正方形填充该矩形。

输入三个正整数 n, m, a(n, m, a ≤ 10^9),计算至多能填入多少正方形?(正方形可以正好碰到矩形边界,但不能超出矩形外)

输入

一行三个用一个空格隔开的正整数 n, m, a。

输出

输出能填入正方形的数量。

样例输入

3 4 1

样例输出

12

数据范围限制

1 <= n, m, a ≤ 10^9

题解

题目分析

这道题我们需要画张图分析一下:

29cc780809aa6e40e53ebee30e9c17e0.png

示意图

从图中不难看出,我们的摆放正方形是有策略的,就是从矩形的一角开始向其他两个方向延伸,直到放不下为止,这时正方形的个数就是最多的。

那问题来了,怎么把这个转换成代码呢?

在分析一下,能放下和放不下的判断依据是什么呢?

就是当前剩余的长度是否能够整除 a。

所以,最多的方块数就是:

(n 中 a 的个数) * (m 中 a 的个数)

到此为止,我们的解题思路就有了。

注意事项

  1. 注意 n, m, a 的数据范围是 10 的 9 次方,需要使用 long 型存储变量。
  2. 整形除法的规则是截去余数,正好适用于这道题。

解题过程

  1. 输入 n, m, a
  2. 求出 n / a 和 m / a
  3. 以上结果相乘并输出

参考代码

#include 

int main() {

long n, m, a;

scanf("%ld %ld %ld", &n, &m, &a);

long z = (n / a) * (m / a);

printf("%ld", z);

return 0;
}

No. 2 存款收益 ?

题目

题目描述

按年利率 R% 存入本钱 X,存入 P 年后的本利合计为 X * ((100 + R) / 100) ^ P,求 Y 的值。

输入

输入一行三个空格隔开的实数 R, X,P

输出

输出收益 Y,答案保留两位小数。

样例输入

1 100 5

样例输出

105.10

数据范围限制

1 <= X <= 10000 1 <= P, R <= 100

题解

题目分析

这道题考察的是基本运算,按照公式求出结果即可。

注意事项

  1. 需要引入 math.h,乘方函数是 pow()
  2. 注意录入 r, x, p 的顺序

解题过程

  1. 输入 r, x, p
  2. 计算并输出

参考代码

#include 
#include

int main() {

double r, x, p, y;

scanf("%lf %lf %lf", &r, &x, &p);

y = x * pow((100 + r) / 100, p);

printf("%.2lf", y);

return 0;
}

No. 3 捡石头 ?

题目

题目描述

憨厚的老农夫昨天捡到了 3 块小石头,他想再去捡一个小石头,让这 4 个石头正好一共重 20 斤,请问他应该去捡一个多少斤的石头?

输入

三个整数 a, b, c,是这三个石头的重量 (斤)

输出

一个数,表示农夫应该去捡一个多少斤的石头。

样例输入

3 5 7

样例输出

5

题解

题目分析

这道题是一个基本的运算题。要想知道还要捡多少斤的石头,应该先知道已经捡了多少斤,然后用 20 做减法就可以了。

解题过程

  1. 注意题目要求的数据类型是整形

解题过程

  1. 输入 a, b, c
  2. 运算并输出

参考代码

#include 

int main() {

int a, b, c;

scanf("%d %d %d", &a, &b, &c);

printf("%d", 20 - (a + b + c));

return 0;
}

「 剑指信奥系列 

从零开始,进阶信息学奥林匹克竞赛

清华计算机系哥哥专业讲解

4a893d23451b67ad75a727d5fbb93f2c.png


趣乐博思教育

遇见你更优秀的孩子

59b668d52107727a91e881d46b421b12.png

‏r

如果您喜欢 趣乐博思教育,请关注我们的公众号,发现您更优秀的孩子!

如果您从这篇文章有所收获,请点亮下方 在看,或转发到朋友圈,谢谢!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值