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