AcWing 3545. 寻找奇特的数(双指针)
原题链接
简单
作者:
白墙
,
2021-05-22 18:08:50
,
所有人可见
,
阅读 366
#include<iostream>
using namespace std;
const int N = 1e5 + 10;
void solve (int n, int m) {
int a[N], b[N];
for (int i = 1; i <= n; i ++) a[i] = b[i] = i;
int ans = 0;
for (int i = 1, j = n; i <= n && j >= 1 ; i ++) {
while (j >= 1 && a[i] * b[j] > m){
j --;
// cout << a[i] << " " << b[j] << endl;
}
if (j >= 1&& a[i] * b[j] == m) ans ++;
}
cout << ans << endl;
}
int main () {
int t;
cin >> t;
while (t --) {
int n, m;
cin >> n >> m;
solve (n, m);
}
return 0;
}
数组a、b是不必要的,直接用i、j计算即可。
啊。对。谢谢大佬。