(順序有可能會有點亂,不要信上面填的答案,看解析,後面附有答案)html
1java
這道題就不用多說了吧,計算機的單位之間進製爲2的10次方算法
因此答案爲: 15488編程
附上經常使用的計算機單位 由大到小 TB GB MB KB K數組
2:優化
這裏來確認下約數的定義 簡單的說就是可以整除 spa
例如 4 對應的約數就有1,2,43d
OK 那這個題應該就會很簡單了吧code
這裏用程序做答htm
1 #include<stdio.h> 2 int main() 3 { 4 int i,j; 5 int sum=0; 6 for(i=1;i<=1200000;i++) 7 { 8 if(1200000%i==0) 9 { 10 sum++; 11 } 12 } 13 printf("sum=%d\n",sum); 14 return 0; 15 }
代碼就不作解釋了 很簡單
3
這裏呢提供兩種方法
(1) 暴力枚舉 固然 這裏的數比較小 很快就出結果了
下面是代碼
#include<stdio.h> int main() { int i,j; int sum=0; int N;//輸入N 這裏是2019 scanf("%d",&N); for(i=1;i<=N;i++) { int j=i; while (j!=0) { if(j%10==9) { sum++; break; } j/=10; /* code */ } } printf("%d\n",sum); return 0; }
那麼 下面咱們看第二種
答案是 544
(2)數學分析的方法
咱們先來看個位數
1個
兩位數 有9+1+8=18
下面看三位數 9*(18+1)+=252
那麼1-1000共有271
故1-2000共有542
再加上2009 2019
共計 544 這個方法有點繞 不是數學特別好的仍是建議直接枚舉
4:
首先 葉節點 沒有下一層的節點 能夠簡單理解爲尾巴節點
一點 必需要有一個開始節點 下面才能夠開始分叉 答案應該就是2018
5:
分析題目 符合條件的數 爲 左邊有比他小的 右邊有比他大的
那麼,我分析算法
第一種 一個一個去找唄 這裏就很少說了
咱們主要看第二種
首先咱們想 對於第n個數 若是咱們知道前面n-1個數的最小值 和後面n+1,,,到結尾的最大值 咱們是否是隻須要簡單的 對比一下就能夠得出結果
那麼咱們就要獲取 最大最小 信息
咱們採用動態規劃的想法 以求最小爲例 咱們知道前n個的最小值(記作min) 咱們算前n+1 的最小值 是否是就要比較 min和第n+1個數 並得出前n+1個的最小值
因此 咱們只須要遍歷兩遍 就個得出最大和最小 而後咱們在遍歷一遍就能得出最後答案
下面附上代碼
(先發布了)
最近兩天補全代碼板塊
6:
首先 題目的意思就是說判斷該單詞是否是 輔音 元音 輔音 元音
其實這個題目 基本 沒有什麼講頭 就判斷就好了唄
提示一下(固然有點多餘) 當第一個不是輔音的時候直接結束就行了
還有長度不到四直接結束就行了
固然還有好多 都不是說會提供太多便利的思想 但,仍是能夠拓展下本身的思惟的
這個題目就不上代碼了
7:
這個題目呢 我沒有發現太簡單的方法 我的認爲就是全排解的問題
關於全排列 本人博客首頁有詳細解析 就很少說了
關鍵就是找到全部可能的序列 進行判斷就行了
再有一個 就是 用全排列的時候 能夠在每次交換後就進行判斷 會剩下好多時間
特別是當序列特別長的時候 關於n的問題 其實咱們能夠當作每一個前面已經有n了 這樣就好理解點
代碼的話 也不寫了 判斷的代碼 相信 學過編程的人都會寫
另外 附上全排列的連接 https://www.cnblogs.com/cndccm/p/12461902.html
這個題就稍微有一點點意思了
首先我來講說個人最初想法 我想上兩個數組 一個往另外一個種
後來 我咋寫TM都有bug 而後我就煩了 不寫了
後來受到啓發 發現了有個更好的方法
咱們用表格中的一塊來表示咱們的地 上面那一塊就是咱們最初的草 (以一個草爲示例)
咱們假設時間爲三個月
咱們看三個月後是什麼樣子
發現什麼規律了嗎
是否是有個有點規則的圖形 固然 你的地要足夠大
相比一月一月的讓他去長 要方便的不是一星半點吧
因此 個人意思就是按照這個圖形的規律去長草 規律不用我多說吧
n月 從一開始草的位置開始 左邊n右邊n上邊一個
而後上邊一個 左右各n-1 知道左右都爲0
上下都是對稱的 就不說下面的了
須要注意的就是邊界的問題
每次長新草以前都要考慮好是否已經到達邊界
固然開頭要進行遍歷 記錄最初全部草的位置 而後按照規律長草就行了
最後輸出就OK了
package com.cryptape.framework.system; import java.util.ArrayList; import java.util.Scanner; public class Main { public static void main(String[] argv){ // 獲取源數據 Scanner in = new Scanner(System.in); int m = in.nextInt(); int n = in.nextInt(); int[][] source = new int[m][n]; // 存哪些點有草 eg i,j ArrayList<String> sourceGreenList = new ArrayList(); // 獲取原始草 for(int i=0; i<m; i++ ){ char[] tmp = in.next().toCharArray(); for(int j=0; j<n; j++){ if(tmp[j]=='g'){ source[i][j]=1; sourceGreenList.add(i+","+j); }else { source[i][j]=0; } } } // 獲取月數 int count = in.nextInt(); // for(int i=0; i<sourceGreenList.size(); i++){ // 解析出點的 (p,q) String[] tmp = sourceGreenList.get(i).split(","); int p = Integer.valueOf(tmp[0]); //行 int q = Integer.valueOf(tmp[1]); //列 // for(int j=0; j<=count; j++){ if(q-j>=0){ for(int t=0; t<=count-j; t++){ if(p-t>=0){ source[p-t][q-j] = 1; } if(p+t<m){ source[p+t][q-j] = 1; } } } if(q+j<n){ for(int t=0; t<=count-j; t++){ if(p-t>0){ source[p-t][q+j] = 1; } if(p+t<m){ source[p+t][q+j] = 1; } } } } } for(int i=0; i<m; i++){ for(int j=0; j<n; j++){ if(source[i][j]==0){ System.out.print("."); } else { System.out.print("g"); } } System.out.println(); } } }
這是用java寫的 (不過此次模擬的是C語言哈 不過道理都同樣 )
下面 還有最後一個題
看着題目 看着花花麗麗 其實就是個排序唄
找出來要表演的節目 按照順序輸出就完了唄
個人建議是 排序的時候 排下標 而後找出分數最高的m個座標 而後按照下標的大小對應前後關係 表演不就完了
實在要說有什麼優化的方法 無非就是 排序算法寫的精妙一點
再有就是 在定最後順序的時候 不要排序了
吧節目數組定爲二維數組 直接修改一個特定的第二排的值 這樣只需對 節目數組 要表演的節目數組 進行一次遍歷就OK 了
代碼就不寫了 相信你們都會寫
好了 此次的模擬到這裏就結束了
此次的模擬說真的其實技術含量仍是比較低的
相對於藍橋杯的歷屆真題 仍是很水的