洛谷P2433 【深基1-2】小学数学 N 合一(C++版)

原题传送门:

https://www.luogu.com.cn/problem/P2433

题目描述

问题 1
请输出 I love Luogu!

问题 2
这里有 10 个苹果,小A 拿走了 2 个,Uim 拿走了 4 个,八尾勇拿走剩下的所有的苹果。我们想知道:

小A 和 Uim 两个人一共拿走多少苹果?
八尾勇能拿走多少苹果?
现在需要编写一个程序,输出两个数字作为答案,中间使用空格分开。

问题 3
现在有 14 个苹果。要均分给 4 名同学,分不掉的苹果放回冰箱。请问:

每位同学能分得几个苹果?

一共分出去多少苹果?

把几个苹果放回冰箱?

现在需要编写一个程序,输出三个数字作为答案,每个数字一行。

问题 4
现在有 500 毫升的肥宅快乐水,要均分给 3 名同学,每位同学可以分到多少毫升?请输出一个数字作为输出。保留 6 位有效数字,且不使用科学计数法。

问题 5
甲列火车长 260 米,每秒行 12 米;乙列火车长 220 米,每秒行 20 米,两车相向而行,从两车车头相遇时开始计时,多长时间后两车车尾相离?已知答案是整数。

问题 6
一个长方形长宽分别是 6cm、9cm,求它的对角线长度(cm)。直接使用 cout 输出。

问题 7
Uim 银行账户里面有100元。经过了下面的操作:

往里面存了 10 元;

购物花掉了 20 元;

把里面的钱全部取出。

请在每次操作后输出账户余额,并使用换行符隔开。

问题 8
当半径为 r=5,请输出圆的周长、面积和球体积。取 π=3.141593。请直接使用 cout 输出答案,每行一个数字。

问题 9
一只小猴买了若干个桃子。第一天他刚好吃了这些桃子的一半,又贪嘴多吃了一个;第二天他也刚好吃了剩余桃子的一半,贪嘴多吃了一个;第三天他又刚好吃了剩下的桃子的一半,并贪嘴多吃了一个。第四天起来一看,发现桃子只剩下一个了。请问小猴买了几个桃子?

问题 10
洛谷的评测任务是单位时间内均匀增加的。8 台评测机 30 分钟可以刚好把评测队列中的程序评测完毕,10 台评测机 6 分钟可以刚好把评测队列中的程序评测完毕,请问几台评测机可以在 10 分钟时刚好把评测队列中的程序评测完毕?

问题 11
小A跑步速度 5m/s,八尾勇跑步速度 8m/s,八尾勇在小A后面 100m,他们同时起跑,请问需要多长时间八尾勇可以追上小A?输出一个数字表示答案,使用 cout 直接输出。

问题 12
大家都知道有 26 个英文字母,其中A是第一个字母。现在请编程求出:

M 是字母表中的第几个字母?
第 18 个字母是什么?
输出一个数字和一个字母,使用换行隔开。

问题 13
小 A 有两块球形橡皮泥,一个半径是 4,一个半径是 10。他想把这两块橡皮泥揉在一起,然后塑造成一个正方体,请问这个正方体的棱长是多少?如果结果不是整数,则舍去小数点之后的数字。取 \pi = 3.141593π=3.141593。

问题 14
根据咕咕网校的预测,当课程定价为 110 元时,会有 10 人报名。如果课程价格每降低 1 元,就会多 1 名报名者(反之亦然)。如果希望总共能收到 3500 元学费的话,那么应该定价多少呢?已知本题有两个答案符合要求,则取较小的那一个。如果这个答案不是整数,则需四舍五入精确到整数。

输入格式
输入一个数字,表示第几个问题。

输出格式
根据每个问题,输出一个答案。

输入输出样例
输入

2

输出

6 4

说明/提示
请解决以下小学数学题。你可以提交答案,也可以写一个程序。

对于本题来说,如果你不知道怎么输入,也可以这么抄:

#include<iostream>
// 填上你觉得需要的其他头文件
using namespace std;
int main() {
    int T;
    cin >> T;
    if (T == 1) {
        // 粘贴问题 1 的主函数代码,除了 return 0
        cout << "I love Luogu!";
    } else if (T == 2) {
        // 粘贴问题 2 的主函数代码,除了 return 0
        cout << 2 + 4 << " " << 10 - 2 - 4;
    } else if (T == 3) {
        // 请自行完成问题 3 的代码
    } else if (T == 4) {
        // 请自行完成问题 4 的代码
    } else if (T == 5) {
        // 请自行完成问题 5 的代码
    } else if (T == 6) {
        // 请自行完成问题 6 的代码
    } else if (T == 7) {
        // 请自行完成问题 7 的代码
    } else if (T == 8) {
        // 请自行完成问题 8 的代码
    } else if (T == 9) {
        // 请自行完成问题 9 的代码
    } else if (T == 10) {
        // 请自行完成问题 10 的代码
    } else if (T == 11) {
        // 请自行完成问题 11 的代码
    } else if (T == 12) {
        // 请自行完成问题 12 的代码
    } else if (T == 13) {
        // 请自行完成问题 13 的代码
    } else if (T == 14) {
        // 请自行完成问题 14 的代码
    }
    return 0;
}

代码:(注意点,转看注释)

#include<iostream>
//下面的setprecisionn()需要
#include<iomanip>
//下面的sqrt(),pow()需要
#include<math.h>
using namespace std;
int main() {
	int T;
	cin >> T;
	if (T == 1) {
		cout << "I love Luogu!";
	}
	else if (T == 2) {
		cout << 2 + 4 << " " << 10 - 2 - 4;
	}
	else if (T == 3) {
		cout << 3 << endl << 12 << endl << 2;
	}
	else if (T == 4) {
	//这里是保留 6 位有效数字即包括整数部分和小数部分,不是保留6位小数,而是3位小数}而是3位小数!!!
		cout << fixed << setprecision(3) << (float)500 / 3;
	}
	else if (T == 5) {
		cout << 15;
	}
	else if (T == 6) {
		cout << sqrt(6 * 6 + 9 * 9);
	}
	else if (T == 7) {
		cout << 110 << endl << 90 << endl << 0;
	}
	else if (T == 8) {
		double pi = 3.141593;
		// 这里的4 / 3需要写成4.0 / 3,因为4 / 3等于1,4.0 / 3等于1.3333
			//这样得到的最终结果不同
		cout << 2 * 5 * pi << endl << 5 * 5 * pi << endl << 4.0 / 3 * 5 * 5 * 5 * pi;
	}
	else if (T == 9) {
		//这里可以反过来想
		int a = 1;
		for (int i = 1; i < 4; i++)
		{
			a = (a + 1) * 2;
		}
		cout << a;
	}
	else if (T == 10) {
		//因为当 为10 分钟在6分钟到30分钟之间,那么评测机在8到10之间,只有9啦
		cout << 9;
	}
	else if (T == 11) {
		//(float)100 / 3与100.0/3结果相同
		cout << (float)100 / 3;
	}
	else if (T == 12) {
		//这里认定A为第一个字母,故而如下写
		cout << 'M' - 'A' + 1 << endl;
		cout << (char)('A' + 18 - 1);
	}
	else if (T == 13) {
		double pi = 3.141593;
		//这里的4 / 3需要写成4.0 / 3,因为4/3等于1,4.0 / 3等于1.3333
				//这样得到的最终结果不同
		double sum = 4.0 / 3 * (4 * 4 * 4 + 10 * 10 * 10) * pi;
		cout << (int)pow(sum, 1.0 / 3);
	}
	else if (T == 14) {
		//这里可以先写出数学的计算式子(110 - i)  (10 + i) = 3500
		//再进行转化为以下
		int a[2];
		int j = 0;
		for (int i = 0; i < 100; i++)
		{
			if ((110 - i) * (10 + i) == 3500)
			{
				a[j++] = 110 - i;
			}
		}
		if (a[0] >= a[1])
			cout << a[1];
		else
			cout << a[0];
	}
	return 0;
}

欢迎任何形式的转载,但请务必注明出处。

限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教 。

  • 15
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
洛谷p5736 【深基7.例2】质数筛是一个关于质数筛法的题目,要求我们根据输入的一个正整数n,找出小于等于n的所有质数。 质数是指只能被1和自身整除的大于1的整数,比如2、3、5、7等。质数筛法是一种常见且高效的找出质数的方法。 在这道题中,我们需要使用质数筛法来找出小于等于n的所有质数。首先,我们定义一个boolean类型的数组isPrime,用来标记每个数字是否是质数。初始时,我们将isPrime数组的所有元素都设置为true。 然后,我们从2开始遍历到n,对于每个数字i,如果isPrime[i]为true,说明这个数字是质数。那么我们就需要将i的倍数都标记为false,因为这些倍数一定不是质数。具体做法是,从2*i开始,每次增加i,将对应的isPrime数组的元素都置为false。 遍历结束后,isPrime数组中为true的元素即为小于等于n的所有质数。我们可以遍历isPrime数组,将为true的下标即为质数输出即可。 这个算法的时间复杂度是O(nloglogn),相较于直接遍历每个数字并判断是否是质数的方法,时间复杂度更低,效率更高。 对于这个题目的java实现,我们可以使用一个boolean数组isPrime来标记每个数字是否是质数,使用一个ArrayList来存储所有的质数,最后将ArrayList转化为数组输出。 代码示例如下: ``` import java.util.ArrayList; public class Main{ public static void main(String[] args){ int n = 100; // 输入的正整数n boolean[] isPrime = new boolean[n+1]; // 标记每个数字是否是质数的数组 ArrayList<Integer> primes = new ArrayList<>(); // 存储质数的ArrayList // 初始化isPrime数组 for(int i=2; i<=n; i++){ isPrime[i] = true; } // 质数筛法 for(int i=2; i<=n; i++){ if(isPrime[i]){ primes.add(i); for(int j=2*i; j<=n; j+=i){ isPrime[j] = false; } } } // 将ArrayList转化为数组输出 int[] result = new int[primes.size()]; for(int i=0; i<primes.size(); i++){ result[i] = primes.get(i); } // 输出结果 for(int i=0; i<result.length; i++){ System.out.print(result[i] + " "); } } } ``` 这样,我们就可以通过这段代码来实现洛谷p5736题目的要求,找出小于等于输入的正整数n的所有质数,并将它们按从小到大的顺序输出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值