題意:求Q值
思路:找規律
顯然可以得到一個矩陣
把這個矩陣畫出來就能發現一個橫向的規律和一個主對角線方向的規律
#include#include #include #include #include #include using namespace std; #define goal 1000000 #define ll int #define N 1000005 ll n, s; ll a[N]; ll du[N]; int main(){ ll i, j, len; while(~scanf(%d,&n)){ for(i=1;i<=n;i++)scanf(%d,&a[i]); du[0] = 0; for(i=1;i<=n;i++)du[i] = du[i-1]^i; ll ans = a[1]; for(i=2;i<=n;i++)ans ^= a[i]; for(i=1;i<=n;i++){ ll siz = n/i; if(siz&1)ans ^= du[i-1]; if(n%i) ans ^= du[n%i]; } printf(%d ,ans); } return 0; }