前段时间, 参加了天梯赛选拔, 结果没想到被虐死了, 所以这段时间练练.
一、题目大意:
二、思路分析:
- 对于该题, 我采取的思路是暴力枚举. 首先根据题给数据范围, 可以估计出最长连续因子的长度为
- Why?
- 所以可想到的思路就是:
- 首先枚举连续因子的长度
- 紧接着枚举连续因子的起点
- 那么需要枚举连续因子的起点和终点的范围是多少呢?
- 起点: 题目提到: 连续因子中1不算在内, 故起点从开始枚举
- 终点: 我们容易得到, 故终点为
- 那么需要枚举连续因子的起点和终点的范围是多少呢?
- 需要特别注意的就是: 当连续因子长度为1时需要单独处理
三、AC Code:
#include <bits/stdc++.h>
using namespace std;
int n, ans;
int main(){
scanf("%d", &n);
int start = sqrt(n);
for (int len = 12;len > 0;len--){ // 枚举连续因子的长度
for (int i = 2;i <= start;i++){ // 枚举连续因子的起点
ans = 1;
int tmp = i;
for (int j = 1;j <= len;j++) ans *= tmp++;
tmp -= len;
if (n % ans == 0){
cout << len << endl << tmp++;
for (int j = 1;j < len;j++) cout << "*" << tmp++;
return 0;
}
}
}
cout << 1 << endl << n;
return 0;
}