“藍橋杯”模擬法(一)——日期問題(2017年試題G)
1.模擬法簡介
模擬法,顧名思義,就是利用計算機模擬問題的求解過程,從而得到問題的解。模擬法由于簡單,因此又被稱為“不是算法的算法”。
模擬法是學習算法的基礎,通過模擬可以學習編程的各類技巧,提升初學者建立各種編程邏輯模型的感覺。大部分模擬題目直接模擬就可以求解,還有少量模擬題目需要考生簡化模擬過程,否則可能會使邏輯復雜,導致求解用時過長。
模擬法適用于問題求解清晰、運算規模較小的問題。如果問題求解的時空代價很大,就要考慮是否有其他更好的解決方案。
2.【案例解析】不高興的津津
津津上初中了。媽媽認為津津應該更加用功地學習,所以津津除了上學之外,還要參加媽媽為她報名的各科復習班。另外,媽媽每周還會送她去學習朗誦、舞蹈和鋼琴。但是津津如果一天上課超過8小時就會不高興,而且上得越久就越不高興。假設津津不會因為其他事不高興,并且她的不高興不會持續到第二天。請你幫忙檢查津津下周的日程安排,看看她下周會不會不高興;如果會,那么她哪天最不高興。
輸入包括7行數據,分別表示周一到周日的日程安排。每行包括兩個小于10的非負整數,用空格隔開,分別表示津津在學校上課的時間和媽媽安排她上課的時間。
輸出一個數字。如果津津不會不高興,則輸出0,如果會,則輸出最不高興的是周幾(用1,2,3,4,5,6,7分別表示周一,周二,周三,周四,周五,周六,周日)。如果有兩天或兩天以上不高興的程度一樣,則輸出時間最靠前的那一天。
例如,輸入下列數據:
5 3
6 2
5 3
5 4
0 4
0 6
則輸出為3。
本題可以采用模擬方法依次判斷哪天最不高興,并將最不高興的那.天輸出,在輸出過程中要注意以下幾個問題。
(1)判斷n個數中的最大值
max= 0;
for (i=1;i<=n;i++) //輸入n個數據
{
cin>>a;
if (a>max)
max=a;
}
(2)數據存儲問題
本題的數據一共有7組,不算多,也不算少,可以直接運算,也可以將數據存儲到數組后再進行計算。
若不采用數組,則模擬的過程如下:
int a,b,s,max=0, i,day=0;
for (i=1;i<=7;i++)
{
cin>>a>>b;
s=a+b;
if ((s>max) && (s>8))
{max=s,day=i; }
}
cout<<day<<endl;
如果采用數組,則可以將數據存儲起來,在后續的操作中會更加方便,也更容易理解,采用數組模擬的方法如下:
int a,b, i, day, max, array[8];
char c;
for(i=1;i<=7;i++)
{
cin>>a>>b;
array[i]=a+b;
}
max=array[0];
for(i=1;i<=7;i++)
{
if (max<array[i])
{
max=array[i];
day=i;
}
if (max>8)
cout<<day<<endl;
else
cout<<0<<endl;
模擬法一般都不,但也會考查一些基礎算法,例如本題考查了如何在n個數中求最大值,及如何判斷津津的不高興條件。
3. 本次程序練習——日期問題(2017年試題G)(答案見下期)
【問題描述】
小明正在整理一批文獻,這些文獻中出現了很多日期,小明知道這些日期都在1960年1月1日至2059年12月31日之間。令小明頭疼的是,這些日期采用的格式非常不統一,有采用“年/月/日”的,有采用“月/日/年”的,還有采用“日/月/年”的。更加麻煩的是,年份都省略了前兩位,使得文獻上的一個日期存在很多可能的日期與其對應。
例如02/03/04,可能是2002年03月04日、2004年02月03日或2004年03月02日。給出一個文獻上的日期,你能幫助小明判斷有哪些可能的日期與其對應嗎?
[輸入格式]
一個日期,格式是" AB/CD/EF" (0≤A,B,C,D,E,F≤9)。
[輸出格式]
輸出若干個不相同的日期,每個日期一行,格式是"yyyy- mm-dd"。多個日期按從早到晚的順序排列。
[樣例輸入]
02/03/04
[樣例輸出]
2002-03-04
2004-02-03
2004-03-02
提示:
本題的思路很簡單,將輸入的3個數據分別進行年、月、日的合法判斷,如果合法就輸出。但是求解本題要注意以下兩點。
(1)月份數據的表示
由于每月的天數沒有規律性,所以最好的方法就是利用數組將每月的天數表示出來,如:
int days[13]={0, 31, 28,31, 30,31, 30, 31, 31, 30,31, 30, 31};
這里還要注意閏年的問題,如果是閏年,則2月的數據就會不同,可以采用另個數組存儲,如:
int leapdays [13]={0,31, 29,31, 30, 31,30,31,31,30,31,30,31};
(2)合法年、月、日的存儲
對于一組數據, 可能會出現重復的合法年、月、日。例如,輸入01/01/01,則3組合法數據都是2001-01-01,所以這里要去重復。
(3)多個日期按從早到晚輸出。
4.上期參考答案
練習6 分解質因數
參考程序一——吳炳毅的答案
#include <iostream>
using namespace std;
int isPrime(int n) //判斷是否為質數函數
{
int num=0;
for(int k=2;k<=n;k++)
{
if(n%k==0)return 1;
}
return 0;
}
int primefactors(int m) //計算一個數的質因數
{
int c=0;
for(int j=2;j<=m;j++)
{
while(m%j==0&& isPrime(j))
{
c++;
m=m/j;
}
}
}
return c;
}
int main()
{
int a,b;
cout<<"input a and b:";
cin>>a>>b;
int sum=0;
for(int i=a;i<=b;i++)
sum+=primeFactors(i);
cout<<sum<<endl;
}
參考程序二——申茂生答案
#include <iostream>
using namespace std;
int nextprime(int a)//輸出下一個質數
{
while(true)
{
int f=0;
a++;
for(int i=2;i<=a/2;i++)
{
if(a%i==0)
{
f=1;
break;
}
}
if(f==0)
return a;
}
}
int main()
{
int a,b,sum1=0;
cin>>a>>b;
for(int i=a;i<=b;i++)//從a到b的范圍
{
int sum2=0;
for(int j=2;j<=i/2;j=nextprime(j))//j為質數,若j整除i,則j為質因數
{
int c=i;
while(c%j==0)//判斷j的冥次方是否整除i
{
sum2++;
//去注釋可看質因數整除i過程cout<<c<<' '<<j<<' '<<sum1+sum2<<endl;
c/=j;
}
}
if(sum2==0)//若sum2為0則說明i為質數,可以整除本身
sum2=1;
sum1+=sum2;
}
cout<<sum1;
}
練習7:回文數 參考程序
#include <iostream>
#include <cmath>
//#include <string>
using namespace std;
string rev(string s) // 字符串逆置
{
string ss(s.rbegin(),s.rend());
return ss;
}
bool isPalindrome(string str) //判斷字符串是否為回文
{
//rbegin() 返回一個逆向迭代器,指向字符串的結尾(第一個字符的前一個位置)。
// rend(); 返回一個逆向迭代器,指向字符串的開頭(第一個字符的前一個位置)。
string rStr(str.rbegin(),str.rend());
if(str==rStr)
return true;
else
return false;
}
int swapDec(string str,int r)//r進制字符串向十進制數轉換
{
int len=str.length();//字符串的長度
int num=0; //十進制數
for(int i=len-1;i>=0;i--)
{
//把數字字符轉換成數值數據
int n;
if(str[i]>='A'&&str[i]<='F')
n=str[i]-'A';
else if(str[i]>='a'&&str[i]<='f')
n=str[i]-'a';
else n=str[i]-'0';
num+=n*pow(r,i);
}
return num;
}
string swapR(int n,int r) //十進制數轉換為r進制的字符串
{
string str="";//r進制字符串
while(n)
{
string t;
int m=n%r;
switch(m)
{
case 10: t="A"; break;
case 11: t="B"; break;
case 12: t="C"; break;
case 13: t="D"; break;
case 14: t="E"; break;
case 15: t="F"; break;
default:t=m+'0'; //整型轉換成字符串
}
str=t+str; //拼接字符串
n=n/r; //修改n的值
}
return str;
}
int main()
{
int n; //進制
string m;//數據
cout<<"input n:";
cin>>n;
cout<<"input m:";
cin>>m;
int counts=0;
while(!isPalindrome(m)) //如果m不是回文
{
int x= swapDec(m,n);//x是m的十進制數
int y= swapDec(rev(m),n);//y是m的逆序串的十進制數;
int z=x+y;//z是兩個數的和
m=swapR(z, n) ;// 修改m的值,接著去檢查m是否為回文
counts++;//計數器加1;
if(counts>30) { //大于30次,則退出循環
break;
counts=-1;
}
}
cout<<counts<<endl;
return 0;
}
微信公眾號搜索: 北京小學學習資料 家長升學指南 家長升學訓練營 關注公眾號,獲取最新資訊!
掃碼添加“家長論壇”微信好友(微信號 16619908263)
獲取藍橋杯算法講解視頻(適合Java,C語言選手)/ 藍橋杯歷年真題
咨詢信息學奧賽政策請撥打電話 16619908263 (同微信號)
-END-

八少八素 早培:
①《人大附中早培海選必刷》《八中海選訓練與解析》電子版教材
http://www.syzly.net/question/110094
② 八少八素、人大附早培神測千題(上 下冊)
http://www.syzly.net/question/110096
③ 人大附、八中海選神測萬題練習冊及答案解析.pdf
http://www.syzly.net/question/110097
④ 八少八素試題分享&人大附早培班試題分享+神測復習資料
http://www.syzly.net/question/110099
北京幼升小、人大附早早培資料:
① 北京各學校幼升小面試真題、小學入學白皮書、學區房詳解
http://www.syzly.net/question/6232
② 知名機構人大附早早培(zzp)學前集訓隊-數學/神測和動手
http://www.syzly.net/question/110082
3)知名機構人大附早早培(zzp)學前集訓隊-數學/神測和動手
http://www.syzly.net/question/110082
4)知名機構人大附早早培(zzp)沖刺班講義(可自學)-春(下)數學
http://www.syzly.net/question/109824
5)知名機構人大附早早培(zzp)集訓隊- 春(下)- 神測和動手
http://www.syzly.net/question/109823
6)知名機構人大附早早培(zzp)集訓隊- 春(中)- 神測和動手
http://www.syzly.net/question/109820
杯賽-解析版 附詳細解題過程:
① 華杯賽/華數之星真題試卷-解析版 附詳細解題過程
http://www.syzly.net/question/110072
② 迎春杯/青少年創新能力測試-解析版 附詳細解題過程
http://www.syzly.net/question/110073
③ 希望杯/希望數學-解析版 附詳細解題過程
http://www.syzly.net/question/110074
④ YMO世界青少年奧林匹克數學競賽-解析版 附詳細解題過程
http://www.syzly.net/question/110075
⑤ 美國數學思維活動AMC8/10/12真題及答案解析
http://www.syzly.net/question/30256
⑥ 歷年全國小數測初評、終評真題及答案解析
http://www.syzly.net/question/109378
⑦ 美國數學大聯盟杯-解析版 附詳細解題過程
http://www.syzly.net/question/110076
⑧ 鵬程杯-解析版 附詳細解題過程
http://www.syzly.net/question/110077
9)IMAS小學中年/高年級第一/二輪檢測試題競賽數學試卷幾答案解析匯總
http://www.syzly.net/question/118541
10)2012-2021年Math Kangaroo袋鼠數學1-6年級競賽中英+全英歷年真題電子版(帶答案)
http://www.syzly.net/question/118507
11)2012-2021年Math Kangaroo袋鼠數學7-10年級競賽中英+全英歷年真題電子版(帶答案)
http://www.syzly.net/question/118508
12)32套香港亞太杯/亞太杯4-6年級競賽初賽、決賽數學試卷-解析版 附詳細解題過程
http://www.syzly.net/question/118509
13)114套香港亞洲國際數學奧林匹克公開賽(AIMO)1-6年級競賽初賽、復賽數學試卷-解析版 附詳細解題過程
http://www.syzly.net/question/118510
14)語文素養大賽 第七-第十屆真題(含答案)
http://www.syzly.net/question/118511
15)IMC國際數學競賽歷年真題合集
http://www.syzly.net/question/118739
16)[可打印]中環杯-解析版 附詳細解題過程
http://www.syzly.net/question/118514
17)[可打印]走美杯-解析版 附詳細解題過程
http://www.syzly.net/question/118515
18)[可打印]全國小學生數學能力測評真題試卷-解析版 附詳細解題過程
http://www.syzly.net/question/118516
19)美國數學思維活動AMC8/10/12真題
http://www.syzly.net/question/118517
20)數學花園探秘總決賽暨迎春杯大師賽試題合集
http://www.syzly.net/question/118543
北京小升初:
① 北京小升初各區真題、模擬題答案和詳細過程解析[可打印]
http://www.syzly.net/question/110105
2)北京小升初語數英筆試面試真題、點招、分班考真題、簡歷模板
http://www.syzly.net/question/118506
人大附練習冊含答案「有答案」 —— 初一到高三
http://www.syzly.net/question/118494
信息學奧賽
1)NOIP 1995年-2021年CSP提高組提高組復賽試題
http://www.syzly.net/question/118495
2)中小學生編程信息學奧賽NOIP中級班課程
http://www.syzly.net/question/118496
3)編程L1-L2系統班
http://www.syzly.net/question/118497
原版英文教材
1)最新English in mind最全資源,含學生書、教師書、練習冊
http://www.syzly.net/question/118518
2)劍橋頂級英文原版教材Unlock!聽說讀寫齊全 0-5級 電子課本、教師用書、視頻、音頻
http://www.syzly.net/question/118519
3)TOEFL Junior小托福語言形式與含義、聽力、閱讀真題模擬題試卷及電子版教材
http://www.syzly.net/question/118520
4)全球頂級閱讀教材 Reading Explorer 視頻、音頻、學生用書、老師用書
http://www.syzly.net/question/118521
西安交通大學少年班:
1)西安交通大學“少年班” 全科備考資料+模擬題+歷年真題+ 面試/復試資料
http://www.syzly.net/question/11809
2)西安交通大學“少年班” 考前突擊班 數學英語文綜理綜(TK)【數學+理綜+文綜+英語(85節)】
http://www.syzly.net/question/118475
3)西安交通大學少年班 數理化集訓營【數學12講+化學4講+物理8講+其他5講】
http://www.syzly.net/question/118474
4)西安交通大學少年班數理化集訓【數學15講+物理12講+化學4講+文綜知識點模擬3講】http://www.syzly.net/question/118473
IESOL朗思真題
1)IESOL朗思A2考試6套真題--帶聽力、答案、聽力文本、答題卡
http://www.syzly.net/question/1184982)IESOL朗思B1考試6套真題--帶聽力、答案、聽力文本、答題卡
http://www.syzly.net/question/1184993)IESOL朗思B2考試12套真題--帶聽力、答案、聽力文本、答題卡
http://www.syzly.net/question/1185004)IESOL朗思C1考試6套真題--帶聽力、答案、聽力文本、答題卡
http://www.syzly.net/question/1185015)LRN—朗思A2考試5套真題--帶聽力、答案、聽力文本、答題卡
http://www.syzly.net/question/1185026)LRN—朗思B1考試6套真題--帶聽力、答案、聽力文本、答題卡
http://www.syzly.net/question/1187367)LRN—朗思B2考試10套真題--帶聽力、答案、聽力文本、答題卡
http://www.syzly.net/question/118503
KET/PET/FCE/IESOL:
1) KET/PET官方真題、官網樣卷、聽力閱讀答題卡、高頻單詞表
http://www.syzly.net/question/1101032)KET聽說讀寫逐項突破
http://www.syzly.net/question/1185223)38講KET劍橋語法初級
http://www.syzly.net/question/1185234)【完結】66天KET單詞訓練營
http://www.syzly.net/question/1185245)Nancy KET考前沖刺真題課(真題講解)
http://www.syzly.net/question/1185256)170講 PET劍橋語法 百日營
http://www.syzly.net/question/1185267)劍橋PET英語精講75節
http://www.syzly.net/question/1185278)20講Nancy2020新版PET沖刺訓練營
http://www.syzly.net/question/1185289)60講北外青少FCE口語/寫作/聽力/閱讀考官通關班【完結】
http://www.syzly.net/question/118529
北京小學期中期末試卷:
① 北京小學1-6年級上學期期中試卷+單元測試試卷及答案+單元知識點匯總
http://www.syzly.net/question/24908
② 北京各小學1-6年級期末真題試卷及解析 復習資料匯總
http://www.syzly.net/question/2952
③ 北京小學1-6年級下學期期中試卷+單元測試試卷及答案+單元知識點匯總
http://www.syzly.net/question/24914
④ 北京各小學1-6年級下學期期末真題試卷及解析 復習資料匯總
http://www.syzly.net/question/24915
5)157套-北京各小學1-6年級下學期語文/數學/英語期末試卷及答案
http://www.syzly.net/question/118491
6)北京各區小學1-6年級語數英各科期中真題及答案解析
http://www.syzly.net/question/118492
7)百套北京各區小學1-6年級語數英各科真題及答案解析
http://www.syzly.net/question/118493
高思學校競賽數學導引
高思學校競賽數學導引三年級詳解升級版教材和配套課程(69講錄播課)
http://www.syzly.net/question/118534高思學校競賽數學導引四年級詳解升級版教材和配套課程(72講錄播課)
http://www.syzly.net/question/118535高思學校競賽數學導引五年級詳解升級版教材和配套課程(72講錄播課)
http://www.syzly.net/question/118536三年級高思學校競賽數學課本&競賽數學同步課程
http://www.syzly.net/question/118530四年級高思學校競賽數學課本&競賽數學同步課程
http://www.syzly.net/question/118531五年級高思學校競賽數學課本&競賽數學同步課程
http://www.syzly.net/question/118532六年級高思學校競賽數學課本&競賽數學同步課程
http://www.syzly.net/question/118533
北京初中:
① 北京中考真題、北京各區初三一模、二模試卷及答案解析匯總
http://www.syzly.net/question/2815
② 中考英語聽說考試試卷及答案、口語和聽力訓練題及備考視頻
http://www.syzly.net/question/24732
北京高中:
① 北京高考英語聽力機考模擬試卷及答案、聽力原文、音頻
http://www.syzly.net/question/24738
② 北京高考一模、二模、高考試卷真題答案及解析、視頻解析
http://www.syzly.net/question/5684
添加 家長論壇微信
獲取 以上資料
沒有找到相關結果
0 個回復