链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
题目描述
小红最近沉迷于数学题,她现在想考考小明一道简单的数学题:
给定正整数 m,x ,小红定义一个正整数 y 和 x 具有关于 m 的等价关系,则 y 满足:
使得对于正整数 k=1,2 ... 10^100,当 kx⩽m 时,ky⩽m。当 kx>m 时,ky>m。
小红想知道有多少个正整数 y ,y 和 x 具有关于 m 的等价关系?
输入描述:
输入共 T+1 行。
第一行一个整数表示 T (1≤T≤105)。
接下来 T 行,每行 2 个正整数,m, x (1≤x≤m≤109),m,x如上描述。
输出描述:
输出共 T 行,每行一个整数,表示多少个正整数 y 和 x 具有关于 m 的等价关系。
示例1
输入
3 15 7 12 12 6 1输出
2 6 1说明
第一问,m=15,x=7,显然y=x=7满足。 y=6时,对于k=1,2时kx≤m且ky≤m。k=3,4...1010010^{100}10100, kx>m且ky>m。 可以证明没有其他正整数y与x有关于m的等价关系。
分析:
找数学关系,找到边界为m/x+1和m/x,推公式求出y的数量。
代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int t;
cin>>t;
while(t--)
{
ll m,x;
cin>>m>>x;
ll l=m/(m/x);
ll r=m/(m/x+1);
cout<<l-r<<'\n';
}
}