模拟总结

来源:互联网 发布:mac苹果电脑备份 编辑:程序博客网 时间:2024/05/16 19:33

   已经两次模拟,有成功有不足,现在我就说说经历两次模拟后的总结和体会。小编我也是一个大一新生,要是有高人看到后不同意小编我的见解,欢迎指教一二。

   首先承认不足,最近在c++的实践学习(就是累代码)上时间投入不足,可能有点想一口气吃成胖子,没事就在翻windows程序设计和c++程序设计,光搞理论了,忽略了实践,还是邓小平爷爷说得对,一切事物要从实际出发。还有就是心态了,今天的模拟心态九门就没把握好,光跟电灯搞战斗了,完全失去了竞赛的心态。唉,我还是年轻啊。

   但我也有收获,通过这几天看书和模拟,感觉要写出好的程序要有两点重要因素:一是对题目的分析和对算法的推敲;二是如何设计框架 。首先是对题目的分析和算法的推敲就不在这里做过多的讨论了,那是需要累计的,而且现在算法还没学(我也是自学)。这次主要是来说说第二点-----建立框架,框架是什么,框架是你程序的雏形,是由伪代码写出的。框架在我看来包括程序框架和数学模型。程序框架是一个空框架,需要你想出哪个函数要完成什么,哪个部分解决什么问题。参见伪代码和向下求精。

   我认为重点在于数学模型。数学模型就是通过信息发掘将问题数学化和数字化,提取有用信息。如果现在和我同届的同学说现在的题目还需要数学吗?那我就会答你不用,那数学模型不重要吗?不是的,是因为我们现在是初学者,做的题都简单。但是要去看看ACM试题和游戏编程,要在冗长的题目中找到对自己有帮助的那数学建模就是十分重要的。

   举个例子:

Feli 的生日礼物

【问题描述】

Felicia 的生日是111日(和Kitty是同一天生的哦)。于是Feli请来Kitty一起过生日。Kitty带来了最新款的“Kitty猫”玩具准备送给 Feli,不过她说,这份礼物可不是白送的。Feli要帮她一个忙,才能够得到心仪已久的玩具。 Kitty说,“Kitty猫”玩具已经卖出了n!个,n<=10^100 *_*Kitty想知道确切的数字,而不是无聊的“一个数加个感叹号”。 Feli听了大吃一惊。要知道,算出n!是一个无比艰巨的任务。Feli告诉Kitty,就算Feli算出n!Kitty也看不下去,因为当n=20 时,计算机的长整型已经存不下了(Kitty只能接受1-9之间的数字)。于是Kitty说,你只要告诉我n!最后一位非0的数就可以了Feli想了想,立刻动手写了个程序算出了正确的答案。现在,请你也试试看!注意哦,AC的男生将会得到一个“Hello Kitty”计算器(可编程,CPU 1THzMem 1TMB),AC的女生将会得到一个仿真“Hello Kitty”宠物(善解人意,无须喂养,智商1101,附带写情书功能)。

 

【要求】

【数据输入】每行一个n,直到输入数据结束

 

【数据输出】对应输入的n,每行输出一个答案

 

【样例输入】

1101

 

【样例输出】

8

乍一看这道题,我们完全可能有被题目吓倒,但我们要是用建立数学模型的方法来分析一下这道题,其实挺简单的。

首先看我标黄的文字,我们会得到两个信息:一、普通思路是解决不了这道题的,因为long int存不下。二、她只要求个位数,也解释说是十位、百位等等不重要(除非个位是零,那我们就除以10,求出左后一个不为零的数)。那我们就不去管个位之前的数字了。那这道题就很容易了。

代码如下:

#include <iostream>using namespace std;int main(){    int number,i,chengji=1;    cin>>number;    for(i=1; i<=number; i++)    {        chengji=chengji*i;        while(chengji%10==0)            chengji=chengji/10;        chengji=chengji%10;    }    cout<<chengji<<endl;    return 0;}

运行结果:



如何提高建立数学模型的能力就是多做题,多思考吧。 

这就是我脑中的建立数学模型,希望对亲们有些作用,也希望同学们提出不足,我好改正。


0 0
原创粉丝点击