#C02L07P01. C02.L07.模拟算法.算法要点
C02.L07.模拟算法.算法要点
模拟法概要
所谓模拟法,就是用计算机模拟某个过程,通过改变数学模型的各种参数,进而观察变更这些参数所引起的过程状态的变化,然后从中得出解答。
模拟题的算法一般都不太复杂,关键是所有条件都不能遗漏并要把条件分析清楚。
解答模拟题通常的步骤是:
(1)认真仔细的读懂题目。模拟题的描述通常都比较详细,篇幅一般都比较长,应该边阅读边将有关的条件一条条地记录下来,阅读完成后要反复核对,绝对不能有错漏。
(2)建立各个条件之间的关系,最好用一些简明的表格列出。
(3)认真分析这些关系,并建立这些关系的数学模型。
(4)规划各个模块的结构,用相应的语言、逐步求精的方法描述具体的算法。
(5)编写程序,调试并运行。
(6)检查题目给出的样例能否通过。
竞赛题目中一般都会给出输入输出样例,以便检查程序的输入输出格式是否正确,但这些样例往往会比竞赛时评判所用的测试数据简单,所以你不能满足于通过这些样例,还要尽量自拟一些更复杂、更全面的测试数据来检查程序的正确性
。经过反复的调试、检查,才算完成该题。
例题
零花钱
题目描述
小明每天都可以从妈妈那里领到零花钱,第 1 天可以领到 1 块钱,第2天可以领到 2 块钱......,第 i 天可以领到 i 块钱,如果小明领到零花钱后,手上的零花钱是 3 的倍数时,小明就会将他手上所有零花钱的三分之一存在妈妈那里(假设小明的零花钱从来不花!)。第 K 天的时候小明手上有多少零花钱呢?
输入格式
一个整数 K ,K <= 100
输出格式
一个整数,小明手上的零花钱。
样例
2
2
参考代码
#include<bits/stdc++.h>
using namespace std;
int k,s;
int main()
{
cin>>k;
for(int i=1;i<=k;i++)
{
s=s+i; //第 i 天的零花钱为i元
if(s%3==0) s=s/3*2; //如果手上的零花钱s为3的倍数,存三分之一在妈妈那,自己留三分之二。
}
cout<<s;
return 0;
}
相关
在以下作业中: