[202404-B]画矩形
[202404-B]画矩形
题目描述
小明要画一个矩形,这个矩形的长和宽都是正整数。
因为他特别喜欢数字 sss,所以他决定让这个矩形的面积(长乘宽)恰好等于 sss。他想知道这个矩形可能有多少种不同的形状。
注意,在本题中,规定 1×21\times 21×2 和 2×12\times 12×1 是两种不同的形状。
输入格式
输入一个正整数 sss 表示矩形的面积。
输出格式
输出一个正整数表示矩形有多少种不同的形状。
样例 #1
样例输入 #1
30
样例输出 #1
8
提示
以下是面积为303030的矩形可能具有的不同形状:
- 1×301\times 301×30;
- 2×152\times 152×15;
- 3×103\times 103×10;
- 5×65\times 65×6;
- 6×56\times 56×5;
- 10×310\times 310×3;
- 15×215\times 215×2;
- 30×130\times 130×1。
对于 70%70\%70% 的测试数据,1≤s≤1081\le s\le 10^81≤s≤108;
对于 100%100\%100% 的测试数据,1≤s≤10101\le s\le 10^{10}1≤s≤1010。
提示:请注意数据范围,选用合适的变量类型。
#include <cstdio>
#include <cmath>int main() {long long s;scanf("%lld", &s);long long count = 0;long long limit = (long long)sqrt((double)s);for (long long i = 1; i <= limit; i++) {if (s % i == 0) { // i是因数long long w = s / i;if (i == w) {count += 1; // 长宽相等,只有一种形状} else {count += 2; // 长宽不同,两个方向都算}}}printf("%lld\n", count);return 0;
}