|
亲!马上注册或者登录会查看更多内容!
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
1096 Consecutive Factors
给定一个n,求n最长有多少个连续自然数的乘积一直可被n整除。
枚举…… 只要循环到sqrt(n)即可。
- #include <cstdio>
- #include <cstring>
- #include <string>
- using namespace std;
- int getLen(int n, int x) {
- int len;
- for (len = 0; n % (x + len) == 0; n /= (x + len++))
- ;
- return len;
- }
-
- int main() {
- int n;
- scanf("%d",&n);
- int len = 0;
- int start = 0;
- for (int i = 2; n / i >= i; ++i) {
- int may = getLen(n, i);
- if (may > len) {
- start = i;
- len = may;
- }
- }
- if (len == 0) {
- start = n;
- len = 1;
- }
- printf("%d\n",len);
- for (int i = 0; i < len; ++i) {
- if (i) {
- putchar('*');
- }
- printf("%d", start + i);
- }
- puts("");
- return 0;
- }
复制代码
|
|