數對

牛牛以前在老師那裏得到了一個正整數數對(x, y), 牛牛忘記他們具體是多少了。
但是牛牛記得老師告訴過他x和y均不大於n, 並且x除以y的餘數大於等於k。

牛牛希望你能幫他計算一共有多少個可能的數對。
輸入描述:
輸入包括兩個正整數n,k(1 <= n <= 10^5, 0 <= k <= n - 1)。
輸出描述:
對於每個測試用例, 輸出一個正整數表示可能的數對數量。
示例1
輸入
5 2
輸出
7
說明
滿足條件的數對有(2,3),(2,4),(2,5),(3,4),(3,5),(4,5),(5,3)

在這裏插入圖片描述對y變量進行遍歷,y從k+1開始取值,然後考慮x的取值。x可以從k開始到n,將x按照除以k的餘數進行分類,大於等於k的爲一類,小於k的爲另一類,注意使用long類型變量

#include<bits/stdc++.h>
using namespace std;
int main()
{
	long long n,k;
	cin >> n >> k;
	long long res = 0;
	if(k == 0)
	{
		res = n*n;
		cout << res << endl;
		return 0;
	}
	for(long long y = k+1;y <= n;y++)
	{
		long long  d = y - k;
		res += ((n-k+1)/y)*d;
		long long yushu = (n-k+1)%y;
		if(d >= yushu)res += yushu;
		else res += d;
		
	} 
	cout << res << endl;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章