UVa 1363 約瑟夫的數論問題

2021-07-10 10:52:21 字數 568 閱讀 3659

題目:

題目鏈結

題意:給定n, k,求出∑ni

=1(k

modi

)分析:

這題不難,但是我一直wa了七次,我的思路跟書上的是一樣的,一直找錯誤,一直wa,但一直找不到我**錯了,後來無奈,看了劉汝佳的**,他實現起來沒有討論k和n誰小誰大,直接比較的,而我先討論了,n>=k的情況(因為這時候,對於所有的i>k,ans都要加上k),然後再用等差公式求解n看個例子n=10,k=8;

求和i從1到n: 0 0 2 0 3 2 1 0 8 8

可以看出,對於i>k,以後的所有數,都是+8,對於i

#include#includeusing namespace std;

typedef long long ll;

int main()

j=k/p; //j是k的整除位置

if(j>n)j=n;

int num=j-i+1;

ans+=(ll)num*m-(ll)num*(num-1)/2*p; //等差數列公式n*a1+(n)*(n-1)/2*d

i=j+1;

}cout<

UVA 1363 約瑟夫的數論問題

輸入正整數n和k 1 n,k 根據紫書,假設k i的整數部分等於p,則k mod i k i p。於是從i,i 1,i 2,j,k除以它們的商的整數部分都相同,則k除以它們的餘數會是乙個等差數列。這樣,可以在列舉i時把它所在的等差數列之和累加到答案中。這需要計算滿足 k j 和 k i p的最大j。...

約瑟夫環問題(數論)

約瑟夫環問題描述 n 個人圍成一圈 編號分別為1 n 從某人開始順序報號1,2,3 m凡報到m者的人出列,再接著從下乙個人開始數,輸出最終出列的人的編號。約瑟夫環是乙個數學的應用問題 已知n個人 以編號1,2,3.n分別表示 圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列 他的下乙個...

數論三 約瑟夫問題

描述 小hi和小ho的班級正在進行班長的選舉,他們決定通過一種特殊的方式來選擇班長。首先n個候選人圍成乙個圈,依次編號為0.n 1。然後隨機抽選乙個數k,並0號候選人開始按從1到k的順序依次報數,n 1號候選人報數之後,又再次從0開始。當有人報到k時,這個人被淘汰,從圈裡出去。下乙個人從1開始重新報...