暫時寫到這里,明天再更一波,若有錯,請指出
填空題
請問在 1 到 2020 中,有多少個數既是 4 的整數倍,又是 6 的整數倍
int sum=0;
for(int i=1;i<=2020;i++){
if(i%6==0&&i%4==0)sum++;
}
System.out.println(sum);
答案:
168
1
小明要用二進制來表示 1 到 10000 的所有整數,要求不同的整數用不同的
二進制數表示,請問,為了表示 1 到 10000 的所有整數,至少需要多少個
二進制位?
System.out.println(Math.pow(2, 13));//二進制數中指數是從0開始的,所以加一
答案:
14
1
請問有多少個序列滿足下面的條件:
1.序列的長度為 5,
2.序列中的每個數都是 1 到 10 之間的整數,
3 序列中后面的數大于等于前面的數,
當時遞回寫的,卡了點時間嗚嗚,暴力不就完事了唉
int sum=0;
for(int a=1;a<=10;a++) {
for(int b=a;b<=10;b++) {
for(int c=b;c<=10;c++) {
for(int d=c;d<=10;d++) {
for(int e=d;e<=10;e++) {
sum++;
}
}
}
}
}
System.out.println(sum);
答案:
2002
一個無向圖包含 2020 條邊,如果圖中沒有自環和重邊,請問最少包含多
少個結點?
當時寫64了,,,
答案
65
兩個字母之間的距離定義為它們在字母表中位置的距離,例如 A 和 C 的
距離為2,L 和 Q 的距離為 5,對于一個字串,我們稱字串中兩兩字
符之間的距離之和為字串的內部距離,例如:ZOO 的內部距離為 22,其
中 Z 和 O 的距離為 11,請問,LANQIAO 的內部距離是多少?
char[] cs= {'L','A','N','Q','I','A','O'};
int sum=0;
for(int i=0;i<cs.length-1;i++) {
for(int j=i+1;j<cs.length;j++) {
sum+=Math.abs(cs[i]-cs[j]);
}
}
System.out.println(sum);
答案:
162
編程題
題目描述
給定一個平行四邊形的底邊長度 l ll 和高度 h hh,求平行四邊形的面積,
輸入格式
輸入的第一行包含一個整數 l ll,表示平行四邊形的底邊長度,
第二行包含一個整數 h hh,表示平行四邊形的高,
輸出格式
輸出一個整數,表示平行四邊形的面積,(提示:底邊長度和高都是整數的平行四邊形面積為整數)
樣例輸入
2
7
樣例輸出
14
資料規模和約定
對于所有評測用例:1 ≤ l , h ≤ 100 1 \leq l, h \leq 1001≤l,h≤100
Scanner scanner=new Scanner(System.in);
int l=scanner.nextInt();
int h=scanner.nextInt();
System.out.println(l*h);
題目描述
現在時間是 a aa 點 b bb 分,請問 t tt 分鐘后,是幾點幾分?
輸入格式
輸入的第一行包含一個整數 a aa,
第二行包含一個整數 b bb,
第三行包含一個整數 t tt,
輸出格式
輸出第一行包含一個整數,表示結果是幾點,
第二行包含一個整數,表示結果是幾分,
樣例輸入
3
20
165
樣例說明
6
5
資料規模和約定
對于所有評測用例:0 ≤ a ≤ 23 , 0 ≤ b ≤ 59 , 0 ≤ t , t 0 \leq a \leq 23, 0 \leq b \leq 59, 0 \leq t, t0≤a≤23,0≤b≤59,0≤t,t 分鐘后還是在當天,
Scanner scanner=new Scanner(System.in);
int a=scanner.nextInt();
int b=scanner.nextInt();
int t=scanner.nextInt();
a+=(b+t)/60;
b=(b+t)%60;
System.out.println(a);
System.out.println(b);
題目描述
小藍負責花園的灌溉作業,
花園可以看成一個 n 行 m 列的方格圖形,中間有一部分位置上安裝有出水管,
小藍可以控制一個按鈕同時打開所有的出水管,打開時,有出水管的位置可以被認為已經灌溉好,
每經過一分鐘,水就會向四面擴展一個方格,被擴展到的方格可以被認為已經灌溉好,即如果前一分鐘某一個方格被灌溉好,則下一分鐘它上下左右的四個方格也被灌溉好,
給定花園水管的位置,請問 k 分鐘后,有多少個方格被灌溉好?
輸入格式
輸入的第一行包含兩個整數 n , m,
第二行包含一個整數 t ,表示出水管的數量,
接下來 t 行描述出水管的位置,其中第 i 行包含兩個數 r , c 表示第 r 行第 c 列有一個排水管,
接下來一行包含一個整數 k,
輸出格式
輸出一個整數,表示答案,
樣例輸入
3 6
2
2 2
3 4
1
樣例輸出
9
1
樣例說明
用1表示灌溉到,0表示未灌溉到,
打開水管時:
000000
010000
000100
1分鐘后:
010000
111100
011110
共有9個方格被灌溉好,
資料規模和約定
對于所有評測用例:1 ≤ n , m ≤ 100 , 1 ≤ t ≤ 10 , 1 ≤ k ≤ 100 1 \leq n, m \leq 100, 1 \leq t \leq 10, 1 \leq k \leq 1001≤n,m≤100,1≤t≤10,1≤k≤100,
將最初水龍頭的位置標記,存入佇列,再用一個佇列存盤下一分鐘蔓延的位置,每分鐘結束,更新佇列中的元素,最后輸出在規定時間內灌溉的位置有多少個即可,
//這道題就是寬搜的基礎運用
class Pair{
int x;
int y;
public Pair(int x,int y) {
this.x=x;
this.y=y;
}
}
public class Main {
private static int n,m;
private static int t;//表示已灌溉數量
private static int k;
private static int num;//水管數量
private static int[][] g;
private static int[][] ts;//坐標代表已灌溉位置,1代表已灌溉
private static Queue<Pair> queue=new LinkedList<Pair>();//創建佇列
public static void bfs() {
int[] ix={1,-1,0,0};
int[] iy= {0,0,1,-1};//這里是用來表示蔓延方向
while(!queue.isEmpty()&&k>0) {//若佇列不空且k分鐘內
int size=queue.size();
for(int i=0;i<size;i++) {
Pair pair=queue.poll();
for(int j=0;j<4;j++) {
int x=pair.x+ix[j];
int y=pair.y+iy[j];
if(x>=0&&x<n&&y>=0&&y<m&&g[x][y]!=1) {//若下標不越界且未灌溉
queue.add(new Pair(x, y));
g[x][y]=1;//標記灌溉成功
num++;
}
}
}
k--;
}
System.out.println(num);
}
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
n=scanner.nextInt();
m=scanner.nextInt();
t=scanner.nextInt();
g=new int[n][m];
for(int i=0;i<t;i++) {
int x=scanner.nextInt();
int y=scanner.nextInt();
g[x-1][y-1]=1;
queue.add(new Pair(x-1,y-1));//剛開始灌溉好的存入佇列
num++;
}
k=scanner.nextInt();
bfs();
}
}
題目描述
小藍有一張黑白影像,由 n ? m 個像素組成,其中從上到下共 n 行,每行從左到右 m列,每個像素由一個 0 到 255 之間的灰度值表示,
現在,小藍準備對影像進行模糊操作,操作的方法為:
對于每個像素,將以它為中心 3 * 3 區域內的所有像素(可能是 9 個像素或少于 9 個像素)求和后除以這個范圍內的像素個數(取下整),得到的值就是模糊后的結果,
請注意每個像素都要用原圖中的灰度值計算求和,
輸入格式
輸入的第一行包含兩個整數 n , m,
第 2 行到第 n + 1 行每行包含 m個整數,表示每個像素的灰度值,相鄰整數之間用一個空格分隔,
輸出格式
輸出 n 行,每行 m 個整數,相鄰整數之間用空格分隔,表示模糊后的影像,
樣例輸入
3 4
0 0 0 255
0 0 255 0
0 30 255 255
樣例輸出
0 42 85 127
5 60 116 170
7 90 132 191
資料規模和約定
對于所有評測用例,1 ≤ n , m ≤ 100 1 \leq n, m \leq 1001≤n,m≤100,
擴展有8個方向擴展,然后以當前這個點為中心向 8 個方向擴展即可,最后按照題意求模糊值,
//這題直接暴力就行了
private static int n;
private static int m;
private static int[][] g;
private static int[][] temp;//存放變化后的值
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
n=scanner.nextInt();
m=scanner.nextInt();
g=new int[n][m];
temp=new int[n][m];
for(int i=0;i<n;i++) {
for(int j=0;j<m;j++) {
g[i][j]=scanner.nextInt();
}
}
int[] mx= {0,0,-1,-1,-1,1,1,1};
int[] my= {-1,1,-1,0,1,-1,0,1};
for(int i=0;i<n;i++) {
for(int j=0;j<m;j++) {
int sum=g[i][j];//表示總和
int chu=1;//表示總個數
for(int q=0;q<8;q++) {
int x=mx[q]+i;
int y=my[q]+j;
if(x>=0&&x<n&&y>=0&&y<m) {//判斷移動后下標是否越界
sum+=g[x][y];
chu++;
}
}
temp[i][j]=sum/chu;
System.out.print(temp[i][j]+" ");
}
System.out.println();
}
}
題目描述
小藍在一個 n行 m 列的方格圖中玩一個游戲,
開始時,小藍站在方格圖的左上角,即第 1 行第 1 列,
小藍可以在方格圖上走動,走動時,如果當前在第 r 行第 c 列,他不能走到行號比 r小的行,也不能走到列號比 c小的列,同時,他一步走的直線距離不超過3,
例如,如果當前小藍在第 3 行第 5 列,他下一步可以走到第 3 行第 6 列、第 3 行第 7 列、第 3 行第 8 列、第 4 行第 5 列、第 4 行第 6 列、第 4 行第 7 列、第 5 行第 5 列、第 5 行第 6 列、第 6 行第 5 列之一,
小藍最終要走到第 n行第 m 列,
在圖中,有的位置有獎勵,走上去即可獲得,有的位置有懲罰,走上去就要接受懲罰,獎勵和懲罰最終抽象成一個權值,獎勵為正,懲罰為負,
小藍希望,從第 1 行第 1 列走到第 n行第 m 列后,總的權值和最大,請問最大是多少?
輸入格式
輸入的第一行包含兩個整數 n , m 表示圖的大小,
接下來 n 行,每行 m 個整數,表示方格圖中每個點的權值,
輸出格式
輸出一個整數,表示最大權值和,
樣例輸入
3 5
-4 -5 -10 -3 1
7 5 -9 3 -10
10 -2 6 -10 -4
樣例輸出
15
資料規模和約定
對于30%的評測用例,1 ≤ n , m ≤ 10 1 \leq n, m \leq 101≤n,m≤10;
對于50%的評測用例,1 ≤ n , m ≤ 20 1 \leq n, m \leq 201≤n,m≤20;
對于所有評測用例,1 ≤ n ≤ 100 , ? 10000 ≤ 權 值 ≤ 10000 1 \leq n \leq 100,-10000 \leq 權值 \leq 100001≤n≤100,?10000≤權值≤10000
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/247761.html
標籤:其他
上一篇:匯編語言基礎
