2020秋季第 1 次練習 習題筆記

2021-10-10 16:04:31 字數 2843 閱讀 8409

e-質因數分解 題目描述 已知正整數n是兩個不同的質數的乘積,試求出兩者中較大的那個質數。 輸入格式 乙個正整數n。 輸出格式 乙個正整數p,即較大的那個質數。

輸入輸出樣例

輸入 #1 21

輸出 #1 7

本題需要注意的是兩個質數的乘積的因子只有四個,分別是,這兩個質數,1和它本身,因此

#include

#include

voidf(

int s)

;int w=1;

intmain()

}return0;

}

i-赦免戰俘

題目背景

借助反作弊系統,一些在月賽有抄襲作弊行為的選手被抓出來了!

題目描述

現有 2n×2n(n≤10) 名作弊者站成乙個正方形方陣等候 kkksc03 的發落。kkksc03 決定赦免一些作弊者。他將正方形矩陣均分為 4 個更小的正方形矩陣,每個更小的矩陣的邊長是原矩陣的一半。其中左上角那乙個矩陣的所有作弊者都將得到赦免,剩下 3 個小矩陣中,每乙個矩陣繼續分為 4 個更小的矩陣,然後通過同樣的方式赦免作弊者……直到矩陣無法再分下去為止。所有沒有被赦免的作弊者都將被處以棕名處罰。

給出 n,請輸出每名作弊者的命運,其中 0 代表被赦免,1 代表不被赦免。

輸入格式

乙個整數 nn。

輸出格式

2n×2n 的 01 矩陣,代表每個人是否被赦免。數字之間有乙個空格。

輸入輸出樣例

輸入 #1 3

輸出 #1

0 0 0 0 0 0 0 1

0 0 0 0 0 0 1 1

0 0 0 0 0 1 0 1

0 0 0 0 1 1 1 1

0 0 0 1 0 0 0 1

0 0 1 1 0 0 1 1

0 1 0 1 0 1 0 1

1 1 1 1 1 1 1 1

做法1:

我的思路:本題的顯著特徵就是無限將矩形分塊,既然是二維問題,那麼肯定需要用到二維陣列來訪問資料,把左上角的矩形全部賦值為0,再對剩下的所有矩形進行操作,因此不難想到需要用遞迴函式解決本問題。

以下的是源**:

#include

int a[

2000][

2000];

void

fine

(int l,

int r,

int h,

int j)

;int p=1;

intmain()

}//這是對區域內的陣列賦值為1

fine(1

,p,1

,p);

//進入函式體

for(

int i=

1;i1;i++

)printf

("\n");

}return0;

}void

fine

(int x1,

int x2,

int y1,

int y2)

//這是遞迴函式結束的條件

if(midx-x1==

0||x2-midx==

0||midy-y1==

0||midy-y2==0)

return

;fine

(midx+

1,x2,midy+

1,y2)

;//+1的原因是我們需要重新定義x1

fine

(midx+

1,x2,y1,midy)

;fine

(x1,midx,midy+

1,y2)

;return

;}

做法2:

上述演算法確實可以,但是有乙個問題就是在遞迴過程中會導致程式執行變慢,需要乙個比較快速的演算法,那麼可以找規律,需要用到乙個異或運算,乙個數的左邊那個數和左下那個數做異或運算,這樣剛好等於這個數,**如下:

#include

#include

#include

#include

#include

#define qwq cout<

#include

#include

#include

#include

#define re register

using

namespace std;

const

int n=

101010

;const

int qwq=

303030

;const

int inf=

0x3f3f3f3f

;int n;

int a[

1234][

1234];

intmain()

printf

("\n");

}return0;

}

做法3:

相較於較為冗長的演算法來說,以下演算法也可一試;(十分巧妙,我不得不服)

int a = i | j; //令a等於i和j按位或

int b = j & j;//令b等於i和j按位與

2020秋季C語言綜合練習題(節選)

題目描述公元13世紀上半葉,蒙古軍隊一路西征殺向歐洲。在進軍途中,蒙古騎兵以旗為單位沿一條道路相繼開進。為了給後面的隊伍指路,每當遇到乙個道路分叉處時,就在路旁堆石頭堆作路標,堆一堆石頭表示直行,堆兩堆石頭表示右轉,堆三堆石頭表示左轉。試用c語言編寫乙個程式,計算出通過的路口數目。假設每個相鄰路口間...

資料結構第 1次上機練習題

include define maxsize 10 線性表的最大長度 define ok 1 define error 0 typedef int elemtype 順序表中存放整形元素 typedef struct seqlist 查詢操作 按內容查詢 int locate seqlist l,e...

2018秋季C語言基礎課第1次作業

1.我認為老師是引導的燈,師生關係就是我向你問問題,你要好好回答,我也好好學。這就是師生。平時可以相處的愉快一些。但是上課一定要尊重老師。給老師面子,即使老師講錯了,也不要揭穿。哈哈。但是和高中就不同了,高中老師其實他是有任務的,如果他不完成指標就會扣工資,所以手把手,這都是有原因的,當然學習還是要...