鴿巢原理

?

鴿巢原理: n+1個鴿子放入n個窩中,至少有一個窩含有兩只鴿子?

Find a multiple
Time Limit:?1000MS?Memory Limit:?65536K
Total Submissions:?5590?Accepted:?2434?Special Judge

Description

The input contains N natural (i.e. positive integer) numbers ( N <= 10000 ). Each of that numbers is not greater than 15000. This numbers are not necessarily different (so it may happen that two or more of them will be equal). Your task is to choose a few of given numbers ( 1 <= few <= N ) so that the sum of chosen numbers is multiple for N (i.e. N * k = (sum of chosen numbers) for some natural number k).

Input

The first line of the input contains the single number N. Each of next N lines contains one number from the given set.

Output

In case your program decides that the target set of numbers can not be found it should print to the output the single number 0. Otherwise it should print the number of the chosen numbers in the first line followed by the chosen numbers themselves (on a separate line each) in arbitrary order.

If there are more than one set of numbers with required properties you should print to the output only one (preferably your favorite) of them.

Sample Input

5
1
2
3
4
1

Sample Output

2
2
3
題意:
一個集合一共有N個數字 ,從中選取任意一個數字集合,使集合中的數字的和是N的倍數
解題思路:
首先,一定存在這樣的集合,它是集合中的一串連續數字,且其和為 N的倍數
證明:
設集合中的數字為 a1,a2,a3,a4,……ai,則設:
S1 = a1
S2 = a1+a2
S3 = a1+a2+a3
Sn = a1+a2+a3+……+an
若 Sn % N = 0,則 Sn 即為所求,
若 Sn % N != 0 ,Sn % N 的 范圍 在 【1,N-1】之間 , 又一共有 N 個余數 ,根據鴿巢原理,一定有兩個余數是相同的,
我們假設為Si 和 Sj,
即有:
Si % N = t
Sj % N = t
那么一定有:
(Si - Sj)% N = 0
所以一定存在符合要求的解,且其集合中的數字是連續的,范圍是【ai,aj】。
證畢。
import java.util.Scanner;public class ACM16 {public static void main(String[] args) {Scanner cin = new Scanner(System.in);int num = cin.nextInt();int[] arr = new int[num], sum = new int[num], b = new int[num];for (int i = 0; i < num; i++) {arr[i] = cin.nextInt();b[i] = -1;}sum[0] = arr[0] % num;b[sum[0]] = 0;int temp = 0, temp1 = 0;for (int i = 1; i < num; i++) {sum[i] = sum[i - 1] + arr[i];sum[i] %= num;if (sum[i] == 0) {temp = -1;temp1 = i;break;}if (b[sum[i]] == -1) {b[sum[i]] = i;} else {temp = b[sum[i]];temp1 = i;break;}}System.out.println(temp1 - temp);for (int i = temp + 1; i <= temp1; i++) {System.out.println(arr[i]);}}
}

?

轉載于:https://www.cnblogs.com/ZhangJinkun/p/3728592.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/375884.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/375884.shtml
英文地址,請注明出處:http://en.pswp.cn/news/375884.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux命令:vim文件操作命令、新建用戶,查看用戶列表,chown命令

命令 簡單說明 :w 保存編輯后的文件內容&#xff0c;但不退出vim編輯器。這個命令的作用是把內存緩沖區中的數據寫到啟動vim時指定的文件中。 :w! 強制寫文件&#xff0c;即強制覆蓋原有文件。如果原有文件的訪問權限不允許寫入文件&#xff0c;例如&#xff0c;原有的文件…

cocos2d-x android 環境搭配,cocos2d-x?Android環境配置問題和解決方法

1.前提&#xff1a;下載安裝Cygwin,并已經在cygwin\home\admin(計算機用戶名)下的.bash_profile中完成如下配置&#xff1a;NDK_ROOT /cygdrive/d/cocos2dxdev/andrid-ndk-r8e//NDK安裝位置export NDK_ROOT問題&#xff1a;運行cygwin.exe.錄入如下的第一行數據后&#xff0c;沒…

jQuery 1.9 移除了 $.browser 的替代方法

授權方式&#xff1a;署名&#xff0c;非商業用途&#xff0c;保持一致&#xff0c;轉載時請務必以超鏈接(http://www.fwolf.com/blog/post/35)的形式標明文章原始出處和作者信息及本聲明。 jQuery 從 1.9 版開始&#xff0c;移除了 $.browser 和 $.browser.version &#xff0…

基于QTcpSocket和QTcpServer的Tcp通訊以及QDataStream序列化數據

最近要在QT下開發Tcp通訊&#xff0c;發送序列化數據以便于接收。 這里涉及到幾個問題&#xff1a; 1.QTcpSocket、QTcpServer的通訊 2.QDataStream序列化數據 多的不說&#xff0c;直接上干貨&#xff01;&#xff01;&#xff01; 客戶端&#xff1a; tcpclient.h 1 #ifndef …

android mina分析,Android與Mina整合

最近想在自己做的安卓手機應用中加入即時聊天功能&#xff0c;于是想到了用Mina來實現&#xff0c;也是由于自己想著偷懶&#xff0c;借用了官方的example中chat的相關代碼&#xff0c;經過一番改造&#xff0c;很快就能在java環境中正常運行了。確認沒問題后&#xff0c;將cli…

棧的應用--括號匹配的檢驗

算法中設置一個棧&#xff0c;每次讀入一個括號&#xff0c;若是右括號&#xff0c;則或者與置于棧頂的括號匹配&#xff0c;或者是不合法的情況&#xff0c;若是左括號&#xff0c;則入棧。若算法結束&#xff0c;棧是空的&#xff0c;則括號合法。 括號匹配函數 Status bra…

node.js 初體驗

node.js 初體驗 2011-10-31 22:56 by 聶微東, 174545 閱讀, 118 評論, 收藏, 編輯 PS: ~ 此篇文章的進階內容在為《Nodejs初階之express》 ~ 2014/09/24 更新《Express 4.X 啟航指南》 歡迎閱讀和評論:) 最近寫的文章收到許多朋友的反饋&#xff0c;感謝大家的支持和建議&#…

Qt之模型/視圖(實時更新數據)

上兩節簡單介紹了Qt中對于模型/視圖的編程&#xff0c;大部分助手里說的很清楚了&#xff0c;現在就開始實戰部分吧&#xff01; 在實際應用中&#xff0c;視圖展示的數據往往并非一成不變的&#xff0c;那么如何實時更新成了一個很重要的問題&#xff01;功能&#xff1a;&am…

android 動態生成fragment,Android動態加載fragment(fragment復用)

【實例簡介】Android動態加載fragment(fragment復用)【實例截圖】【核心代碼】fm_reuse└── fm_reuse├── AndroidManifest.xml├── bin│ ├── AndroidManifest.xml│ ├── classes│ │ └── com│ │ └── example│ │ └── fm_reuse│ …

Linux內核3.0移植并基于Initramfs根文件系統啟動

Linux內核移植與啟動 Target borad&#xff1a;FL2440 Bootloader&#xff1a;U-boot-2010.09 交叉編譯器&#xff1a;buildroot-2012.08 1.linux內核基礎知識 首先&#xff0c;磨刀不誤砍柴工。在動手進行linux內核移植之前&#xff0c;我們有必要對linux內核進行一定的了解。…

操作系統上機作業--實現shell(2)(多進程)

sh2.c: 實現shell程序&#xff0c;要求在第1版的基礎上&#xff0c;添加如下功能 ? 實現文件重定向 ? $ echo hello >log ? $ cat log ? Hello 實現思路&#xff1a; 和sh1.c相比&#xff0c;主要是修改了cmd函數的實現過程。通過循環找出重定向符號"&g…

當泛型方法推斷,擴展方法遇到泛型類型in/out時。。。

說到泛型方法&#xff0c;這個是.net 2.0的時候引入的一個重要功能&#xff0c;c#2.0也對此作了非常好的支持&#xff0c;可以不需要顯試的聲明泛型類型&#xff0c;讓編譯器自動推斷&#xff0c;例如&#xff1a; 1 void F<T>(T value){} 2 //... 3 int i 0; 4 F(i); 此…

AOP相關

實現AOP的技術&#xff0c;主要分為兩大類&#xff1a;一是采用動態代理技術&#xff0c;利用截取消息的方式&#xff0c;對該消息進行裝飾&#xff0c;以取代原有對象行為的執行&#xff1b;二是采用靜態織入的方式&#xff0c;引入特定的語法創建“方面”&#xff0c;從而使得…

操作系統上機作業--根據萊布尼茲級數計算PI(1)(多線程)

pi1.c: 使用2個線程根據萊布尼茲級數計算PI ? 萊布尼茲級數公式: 1 - 1/3 1/5 - 1/7 1/9 - ... PI/4 ? 主線程創建1個輔助線程 ? 主線程計算級數的前半部分 ? 輔助線程計算級數的后半部分 ? 主線程等待輔助線程運行結束后,將前半部分和后半部分相加實現思路&#xff1…

四種途徑將HTML5 web應用變成android應用

作為下一代的網頁語言&#xff0c;HTML5擁有很多讓人期待已久的新特性。HTML5的優勢之一在于能夠實現跨平臺游戲編碼移植&#xff0c;現在已經有很多公司在移動設備上使用HTML5技術。隨著HTML5跨平臺支持的不斷增強和智能手機的迅速普&#xff0c;HTML5技術有著非常好的發展前景…

操作系統上機作業--根據萊布尼茲級數計算PI(2)(多線程)

pi2.c: 使用N個線程根據萊布尼茲級數計算PI ? 與上一題類似&#xff0c;但本題更加通用化&#xff0c;能適應N個核心&#xff0c;需要使用線程參數來實現 ? 主線程創建N個輔助線程 ? 每個輔助線程計算一部分任務&#xff0c;并將結果返回 ? 主線程等待N個輔助線程…

html 16進制 轉換成字符串,js 字符串和16進制的互相轉換

字符串轉16進制function strToHexCharCode(str) {if(str "")return "";var hexCharCode [];hexCharCode.push("0x");for(var i 0; i < str.length; i) {hexCharCode.push((str.charCodeAt(i)).toString(16));}return hexCharCode.join(&qu…

數組以及冒泡排序

數組 1、概念&#xff1a;可以幫我一次聲明多個同類型的變量&#xff0c;這些變量再內存中是連續存儲的。 2、聲明語法&#xff1a;數據類型[] 數組名 new 數據類型[數組長度] 數組長度&#xff1a;一次要聲明的同類型的變量個數。是在定義這個數組的時候就確定了&#xf…

jQuery觸發a標簽的點擊事件無效

1 <a id"workFrame" href"pages/work.html" target"FrameBox">首頁</a> 2 3 $("#workFrame").tigger("click"); 上述的代碼&#xff0c;其實挺正常的&#xff0c;但是怎么也觸發不了a標簽的cli…

操作系統上機作業--多線程排序

sort.c: 多線程排序 ? 主線程創建一個輔助線程 ? 主線程使用選擇排序算法對數組的前半部分排序 ? 輔助線程使用選擇排序算法對數組的后半部分排序 ? 主線程等待輔助線程運行結束后,使用歸并排序算法歸并數組的前半部分和后半部分 實現思路&#xff1a; ARRAY_CO…