51nod 1103 N的倍數 抽屜原理

2022-07-23 21:30:37 字數 598 閱讀 9747

no solution的情況是不存在的,如果n個數中存在8的倍數,那麼直接輸出這個數就好了,如果不存在,n個數對n取餘,因為不存在餘數為0,所以共n-1種餘數,n個中至少有兩個餘數相同,因此一定存在使得和為8的倍數的情況。

①如果字首和%n==0,此時前i個數的和為8的倍數,輸出前i個數即可

②如果不存在字首和%n==0,則必然至少存在兩個字首和相同,相減可得到和%n==0的部分

#include#include

#include

using

namespace

std;

typedef

long

long

ll;int n,a[50005

];int sum[50005

];bool b[50005

];int flag = 0

;int

main()

}memset(b,

0, sizeof

(b));

b[sum[

1]] = 1

;

if (!flag)}}

return0;

}

51nod 1103 N的倍數 (抽屜原理)

乙個長度為n的陣列a,從a中選出若干個數,使得這些數的和是n的倍數。例如 n 8,陣列a包括 2 5 6 3 18 7 11 19,可以選2 6,因為2 6 8,是8的倍數。input 第1行 1個數n,n為陣列的長度,同時也是要求的倍數。2 n 50000 第2 n 1行 陣列a的元素。0 a i...

51nod 1103 N的倍數 抽屜原理

原題鏈結 1103 n的倍數 ural 1302 基準時間限制 1 秒 空間限制 131072 kb 分值 40 難度 4級演算法題 乙個長度為n的陣列a,從a中選出若干個數,使得這些數的和是n的倍數。例如 n 8,陣列a包括 2 5 6 3 18 7 11 19,可以選2 6,因為2 6 8,是8...

51nod 1103 N的倍數(抽屜定理)

題目 思路 首先明確,輸出任意乙個答案即可 求mod n的字首和,然後如果0就是答案,如果沒有等於0的,考慮mod n結果只能是1 n 1,所以根據抽屜定理 鴿巢定理 若把n個物體放在n 1個抽屜中,至少有乙個抽屜中放了兩個物體 所以肯定有兩個相同的字首和,相減就是結果了 include using...