乙個長度為n的陣列a,從a中選出若干個數,使得這些數的和是n的倍數。
例如:n = 8,陣列a包括:2 5 6 3 18 7 11 19,可以選2 6,因為2 + 6 = 8,是8的倍數。
收起
第1行:1個數n,n為陣列的長度,同時也是要求的倍數。(2 <= n <= 50000)第2 - n + 1行:陣列a的元素。(0 < a[i] <= 10^9)
如果沒有符合條件的組合,輸出no solution。第1行:1個數s表示你所選擇的數的數量。
第2 - s + 1行:每行1個數,對應你所選擇的數。
82563187
1119
2s陣列記錄字首和對n的餘數,第一種情況是s出現0時符合要求,第二種情況是開個標技陣列,當si的值出現兩次時,這次代表了出現了n的倍數(s+x)%n=s%n,那麼x%n==0,這一點要想到。26
#includeusing namespace std;
#define ll long long
const int maxn=50000+66;
const ll mod=1e9+7;
int a[maxn];
int vis[maxn];
int s[maxn];
int n;
int main()
for(int i=1;i<=n;i++)
break;
}if(vis[s[i]])
break;
}vis[s[i]]=i;
}}
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...