• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • 2016藍橋杯C組決賽java



    平方末尾



    能夠表示為某個整數的平方的數字稱為“平方數”
    比如,25,64
    雖然無法立即說出某個數是平方數,但經常可以斷定某個數不是平方數。
    因為平方數的末位只可能是:[0, 1, 4, 5, 6, 9] 這6個數字中的某個。
    所以,4325435332必然不是平方數。


    如果給你一個2位或2位以上的數字,你能根據末位的兩位來斷定它不是平方數嗎?


    請計算一下,一個2位以上的平方數的最后兩位有多少種可能性?


    注意:需要提交的是一個整數,表示2位以上的平方數最后兩位的不同情況數。
    不要填寫任何多余內容(比如,說明解釋文字等)

    import java.util.HashSet;
    import java.util.Set;
    public class A {
    	public static void main(String[] args){
    		Set<String> set = new HashSet<>();
    		//2位以上的平方數 最小因子是10
    		for(long i=10;i<10000;i++){
    			String str = i*i+"";
    			String l2 = str.substring(str.length()-2);
    			//每次添加成功,即找到了不一行的可能性 輸出 set 的長度
    			if(set.add(l2)){
    				System.out.println(set.size());
    			}
    		}
    	}
    
    }
    


    七星填數



    如圖【圖1.png】所示。


    在七角星的14個節點上填入1~14 的數字,不重復,不遺漏。
    要求每條直線上的四個數字之和必須相等。


    圖中已經給出了3個數字。
    請計算其它位置要填充的數字,答案唯一。


    填好后,請提交綠色節點的4個數字(從左到右,用空格分開)


    比如:12 5 4 8
    當然,這不是正確的答案。


    注意:只提交4個用空格分開的數字,不要填寫任何多余的內容。



    全排列問題,1 - 14 個數 除去 14、11、6 去廁所全排列

    把原圖加工一下,對應上我的數組


    import java.util.Iterator;
    import java.util.Scanner;
    import java.util.TreeSet;
    
    public class Main {
    	
    	
    	public static void main(String args[]){
    		int[] arr = {1,2,3,4,5,7,8,9,10,12,13};
    		all(arr,0);
    	}
    	static void all(int[] arr,int index){
    		if(index==arr.length-1){
    			check(arr);
    			return;
    		}
    		for(int i=index;i<arr.length;i++){
    			swap(arr,index,i);
    			all(arr,index+1);
    			swap(arr,index,i);
    		}
    	}
    	
    	static void swap(int[] arr,int i,int j){
    		int temp = arr[i];
    		arr[i] = arr[j];
    		arr[j] = temp;
    	}
    	static void check(int[] arr){
    		int n1 = arr[0]+ arr[1] + arr[2] + arr[3];
    		int n2 = arr[0] + arr[4] +arr[5] +arr[6];
    		if(n1!=n2)return;
    		int n3 = arr[6] + arr[7] +arr[9] + 11;
    		if(n3!=n1)return;
    		int n4 = arr[8] + arr[9] + arr[10] + arr[3];
    		if(n4!=n1)return;
    		int n5 = 6 + arr[2] + arr[10] +11;
    		if(n5!=n1)return;
    		int n6 = 14 + arr[4] + arr[1] + 6;
    		if(n6!=n1)return;
    		int n7 = 14 + arr[5] + arr[7] +arr[8];
    		if(n7!=n1)return;
    		
    		//你們都得給我去等于 n1  不然就直接 結束函數
    		System.out.println(arr[0]+" " +arr[1] +" " + arr[2] + " " +arr[3]);
    		
    	}
    
    }


    打印數字


    小明寫了一個有趣的程序,給定一串數字。
    它可以輸出這串數字拼出放大的自己的樣子。


    比如“2016”會輸出為:
     22222   00000       1   6666
    2     2 0     0    1 1  6
          2 0     0      1  666666
         2  0     0      1  6     6
       2    0     0      1  6     6
     2    2 0     0      1  6     6
    2222222  00000     1111  66666


    請仔細分析代碼,填寫劃線部分缺少的內容。




    public class Main
    {
    static void f(int n)
    {
    String[][] di = 
    {{" 00000 ",
    "0     0",
    "0     0",
    "0     0",
    "0     0",
    "0     0",
    " 00000 "},
    {"     1 ",
    "   1 1 ",
    "     1 ",
    "     1 ",
    "     1 ",
    "     1 ",
    "   1111"},
    {" 22222 ",
    "2     2",
    "      2",
    "     2 ",
    "   2   ",
    " 2    2",
    "2222222"},
    {" 33333 ",
    "3     3",
    "      3",
    "  3333 ",
    "      3",
    "3     3",
    " 33333 "},
    {"   44  ",
    "  4 4  ",
    " 4  4  ",
    "4   4  ",
    "4   4  ",
    "4444444",
    "    4  "},
    {" 55555 ",
    " 5     ",
    "555555 ",
    "      5",
    "      5",
    "5     5",
    " 55555 "},
    {" 6666  ",
    "6      ",
    "666666 ",
    "6     6",
    "6     6",
    "6     6",
    " 66666 "},
    {"7777777",
    "7    7 ",
    "    7  ",
    "   7   ",
    "  7    ",
    " 7     ",
    " 7     "},
    {" 88888 ",
    "8     8",
    "8     8",
    " 88888 ",
    "8     8",
    "8     8",
    " 88888 "},
    {" 99999 ",
    "9     9",
    "9     9",
    " 999999",
    "      9",
    "9     9",
    " 99999 "}};
                   
    char[] cc = (""+n).toCharArray(); 
              
    for(int i=0; i<di[0].length; i++){
    for(int j=0; j<cc.length; j++){
    System.out.print( ____________________ + " ");  //填空位置

    }
    System.out.println();
    }
    }

    public static void main(String[] args)
    {
    f(2016);
    }
    }


    注意:只提交劃線部分缺少的代碼,不要添加任何題面已有代碼或符號。
    也不要提交任何說明解釋文字等。
    di[cc[j]-'0'][i]


    贏球票



    某機構舉辦球票大獎賽。獲獎選手有機會贏得若干張球票。


    主持人拿出 N 張卡片(上面寫著 1~N 的數字),打亂順序,排成一個圓圈。
    你可以從任意一張卡片開始順時針數數: 1,2,3.....
    如果數到的數字剛好和卡片上的數字相同,則把該卡片收入囊中,從下一個卡片重新數數。
    直到再無法收獲任何卡片,游戲結束。囊中卡片數字的和就是贏得球票的張數。


    比如:
    卡片排列是:1 2 3
    我們從1號卡開始數,就把1號卡拿走。再從2號卡開始,但數的數字無法與卡片對上,
    很快數字越來越大,不可能再拿走卡片了。因此這次我們只贏得了1張球票。


    還不算太壞!如果我們開始就傻傻地從2或3號卡片數起,那就一張卡片都拿不到了。


    如果運氣好,卡片排列是 2 1 3
    那我們可以順利拿到所有的卡片!


    本題的目標就是:已知順時針卡片序列。
    隨便你從哪里開始數,求最多能贏多少張球票(就是收入囊中的卡片數字之和)


    輸入數據:
    第一行一個整數N(N<100),表示卡片數目
    第二行 N 個整數,表示順時針排列的卡片


    輸出數據:
    一行,一個整數,表示最好情況下能贏得多少張球票


    比如:
    用戶輸入:
    3
    1 2 3


    程序應該輸出:
    1


    比如:
    用戶輸入:
    3
    2 1 3


    程序應該輸出:
    6




    資源約定:
    峰值內存消耗 < 256M
    CPU消耗  < 1000ms


    請嚴格按要求輸出,不要畫蛇添足地打印類似:“請您輸入...” 的多余內容。


    所有代碼放在同一個源文件中,調試通過后,拷貝提交該源碼。
    注意:不要使用package語句。不要使用jdk1.7及以上版本的特性。
    注意:主類的名字必須是:Main,否則按無效代碼處理。

    首先N小于100,直接暴力模擬,模擬每一個開始數數的位置
    import java.util.Iterator;
    import java.util.Scanner;
    import java.util.TreeSet;
    
    public class Main {
    	
    	static int n;
    	public static void main(String args[]){
    		Scanner input = new Scanner(System.in);
    		n = input.nextInt();
    		int[] arr = new int[n];
    		for(int i=0;i<arr.length;i++){
    			arr[i] = input.nextInt();
    		}
    		
    		int Max = 0;
    		//從每一個位置開始數數?
    		for(int i=0;i<n;i++){
    			Max = Math.max(Max,iter(arr,i));
    		}
    		System.out.println(Max);
    		
    	}
    	
    	static int iter(int[] arr,int i){
    		//那些數已經被拿過了
    		//true 已經拿過了
    		//false 未拿過
    		boolean[] bol = new boolean[n];
    		int num = 0;
    		
    		//數數
    		int ss = 1;
    		while(true){
    			i = i%n;
    			//數的數大于了最大數
    			if(ss>n)break;
    			//判斷是否我把所有的票取完了
    			if(check(bol))break;
    			//已經拿過了就跳過循環
    			if(bol[i]){
    				i++;
    				continue;
    			}
    			
    			//數的數和卡片對應
    			if(ss==arr[i]){
    				bol[i] = true;
    				num += arr[i];
    				ss = 0;
    			}
    			ss++;
    			i++;
    		}
    		
    		return num;
    	}
    	
    	
    	static boolean check(boolean[] bol){
    		for (int i = 0; i < bol.length; i++) {
    			if(bol[i]==false)return false;
    		}
    		return true;
    	}
    
    }


    路徑之謎



    小明冒充X星球的騎士,進入了一個奇怪的城堡。
    城堡里邊什么都沒有,只有方形石頭鋪成的地面。


    假設城堡地面是 n x n 個方格。【如圖1.png】所示。


    按習俗,騎士要從西北角走到東南角。
    可以橫向或縱向移動,但不能斜著走,也不能跳躍。
    每走到一個新方格,就要向正北方和正西方各射一箭。
    (城堡的西墻和北墻內各有 n 個靶子)




    同一個方格只允許經過一次。但不必做完所有的方格。


    如果只給出靶子上箭的數目,你能推斷出騎士的行走路線嗎?


    有時是可以的,比如圖1.png中的例子。


    本題的要求就是已知箭靶數字,求騎士的行走路徑(測試數據保證路徑唯一)


    輸入:
    第一行一個整數N(0<N<20),表示地面有 N x N 個方格
    第二行N個整數,空格分開,表示北邊的箭靶上的數字(自西向東)
    第三行N個整數,空格分開,表示西邊的箭靶上的數字(自北向南)


    輸出:
    一行若干個整數,表示騎士路徑。


    為了方便表示,我們約定每個小格子用一個數字代表,從西北角開始編號: 0,1,2,3....
    比如,圖1.png中的方塊編號為:


    0  1  2  3
    4  5  6  7
    8  9  10 11
    12 13 14 15




    示例:
    用戶輸入:
    4
    2 4 3 4
    4 3 3 3


    程序應該輸出:
    0 4 5 1 2 3 7 11 10 9 13 14 15






    資源約定:
    峰值內存消耗 < 256M
    CPU消耗  < 1000ms




    請嚴格按要求輸出,不要畫蛇添足地打印類似:“請您輸入...” 的多余內容。


    所有代碼放在同一個源文件中,調試通過后,拷貝提交該源碼。
    注意:不要使用package語句。不要使用jdk1.7及以上版本的特性。
    注意:主類的名字必須是:Main,否則按無效代碼處理。



    點擊跳轉到問題詳細解釋



    版權聲明:本文為SUNbrightness原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/SUNbrightness/article/details/80415271

    智能推薦

    1301: [藍橋杯2016決賽]隨意組合

    題意 傳送門 分析 當時想到的就是排列組合,就是從第一組挑一個數,第二組挑一個數。 用的是搜索,而且用了兩個dfs,同時為了避免重復,四個數一定是從大到小排列的。...

    1303: [藍橋杯2016決賽]路徑之謎

    題目 思路:感覺就是簡單的dfs,需要一直考慮到回溯,最后還要剪枝,不然會出現超時的問題 AC代碼:...

    1313: [藍橋杯2016決賽]贏球票

    題目 感覺這題的意思比較難懂,題目比較簡單,直接模擬就過了 題意:每次都只取出一個,好像和約瑟夫環有點像 AC代碼:...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    猜你喜歡

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    requests實現全自動PPT模板

    http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...

    Linux C系統編程-線程互斥鎖(四)

    互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...

    統計學習方法 - 樸素貝葉斯

    引入問題:一機器在良好狀態生產合格產品幾率是 90%,在故障狀態生產合格產品幾率是 30%,機器良好的概率是 75%。若一日第一件產品是合格品,那么此日機器良好的概率是多少。 貝葉斯模型 生成模型與判別模型 判別模型,即要判斷這個東西到底是哪一類,也就是要求y,那就用給定的x去預測。 生成模型,是要生成一個模型,那就是誰根據什么生成了模型,誰就是類別y,根據的內容就是x 以上述例子,判斷一個生產出...

    精品国产乱码久久久久久蜜桃不卡