題目:
題目鏈結
題意:給定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開始重新報...