竞赛
考级
枚举宽即可,从1到√n
代码思路: 首先输入表示长方形面积的整数 s; 确定长方形宽的最大可能值 max_b:通过循环遍历 i,当 i 的平方小于等于 s 时持续更新 max_b 为当前 i,最终 max_b 为 s 的算术平方根向下取整(此操作保证宽≤长,符合题目长≥宽的约定); 初始化计数器 cnt 为 0,用于统计符合条件的长方形数量; 遍历所有可能的宽 i(范围 1 到 max_b),再嵌套循环遍历 j 从 1 到 s,寻找满足 i*j=s 的整数 j(即对应合法的长),若找到则计数器 cnt 加 1; 最后输出计数器 cnt 的值,即为符合条件的长方形种类数。
注:这题必须考虑完全平方数 这道题是我第三次AC的
#include <bits/stdc++.h> using namespace std; int main(){ int n,a=0; cin>>n; for(int i=1;ii<=n;i++){ a+=n; } int cnt=0; for(int i=1;ii<=n;i++){ for(int j=1;j<=n;j++){ if(i*j==n){ cnt+=1; } } } cout<<cnt; }
提交答案之后,这里将显示提交结果~