链接
思路
没有什么可讲的,就是一个优化需要讲一下
从O(n2)优化到O(n)
在暴力枚举长方形的边时,只需要枚举一条边,另一条边用面积模枚举出来的一条边如果可以整除,那么计数器加一
如果有问题就在评论区里问我,或者私信我就好了,我真不知道这道题要怎么讲,看到会及时回答哒
代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
/*关闭cin cout同步留,如果不想写这么长,可以选择用scanf printf作为输入输出*/
std::ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
/*S为长方形的面积,cnt是计数器,记录有多少个符合条件的长方形*/
int S,cnt = 0;
cin >> S;
/*最暴力的办法是把两边全部枚举,时间复杂度:O(n2),优化就是只枚举一条边,另一条边用面积判断*/
for(int i = 1;i * i <= S;i ++) if(S % i == 0) cnt ++;
cout << cnt << '\n';
return 0;
}
PS:我是新手,谢谢指点