[趣题]取数
前言
這是之前聽聞的一道比較妙的題,現在感覺還是記錄一下比較好
題目
給出n(1≤n≤1000000)n(1\le n\le1000000)n(1≤n≤1000000),并且給你nnn個數a1???an(0≤ai<n)a_1···a_n(0\le a_i< n)a1????an?(0≤ai?<n)
讓你從其中選出一些數,使得這些數的和模nnn為000,輸出任意一種方案,無解輸出?1-1?1
這是小學數學題
不要輕言放棄
這是小學數學題
不要輕言放棄
這是小學數學題
不要輕言放棄
這是小學數學題
不要輕言放棄
暴力
作為一名OIer背包是非常好想的吧^ _ ^,復雜度Θ(n2)\Theta(n^2)Θ(n2),顯然不能過
這是小學數學題
不要輕言放棄
這是小學數學題
不要輕言放棄
這是小學數學題
不要輕言放棄
這是小學數學題
不要輕言放棄
題解
一個結論,我們一定能夠取出連續的一段使得這些數的和為nnn
證明用到的是小學數學知識抽屜原理,對于前綴和模nnn的值一共有n+1n+1n+1個,任意兩個前綴對應一個子段,由于一個數模nnn只有nnn個取值,所以一定有兩個前綴的前綴和模nnn相同,取出即可
復雜度Θ(n)\Theta(n)Θ(n),通過此題!
總結
這是一道考驗思維的趣題
腦子是個好東西
總結
- 上一篇: [SDWC2018 Day1]网格
- 下一篇: 参加浙江中医药大学第十二届程序设计竞赛(