菜鸟程序员


私信TA

用户名:yaoyichen

访问量:213

签 名:

会编程的数学课代表

等  级
排  名 4135
经  验 1295
参赛次数 4
文章发表 15
年  龄 12
在职情况 学生
学  校 飞龙实验小学
专  业 数学课代表

  自我简介:

一名会编程的小学生(很菜)

TA的其他文章

今天看到一个较简单的比赛真题,特来分享。制作不易,给个高分,谢谢。

题目描述:

8AZEQU}3MBNXI7[O2]1Z1GS.png

这道题大家刚看到的时候可能觉得“哇塞,好难的样子”,但实际上做编程题其实就是做数学题,只要你的算法对了,程序就不会有太多的问题。

这道题我们可以分成两部分来理解

  1. 当面包数与面包机每次可烤的面包数相等,或面包数小于面包机每次可烤的面包数。

  2. 当面包数大于面包机每次可烤的面包数。

针对第一部分,用数学的思维来理解,虽然每次只能烤一个面包的一个面,但是每次能把所有面包的一个面都烤了,想要一个两面都烤到得面包,你说要多少次呢?(留给大家思考)

if(n<=k)
{
    cout<<n*2;
}

针对第二部分,还是用数学的思维来理解,每次只能烤一个面包的一个面,其实也就是烤(面包数×2)个面,因为一个面包有两个面。每次能烤k个面,一共要烤(面包数×2)个面,就要n*2/k次。

else
{
    cout<<(n*2)/k;
}

实际上这道题考验的的是数学思维,主程序仅仅不过10行,并没有蕴含多少编程技术。我希望大家做题的时候能像做数学题一样,多运用数学思维。

参考代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n,k;
	cin>>n>>k;
	if(n<=k)
	{
		cout<<n*2;
	} 
	else
	{
		cout<<(n*2)/k;
	}

    return 0;
}

制作不易,给个高分,谢谢。

 

0.0分

1 人评分

  评论区