找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1985|回复: 0
收起左侧

[米群网刷题小分队] [PAT-B] 1096 Consecutive Factors

[复制链接]
发表于 5-3-2015 09:42 PM | 显示全部楼层 |阅读模式

亲!马上注册或者登录会查看更多内容!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
1096 Consecutive Factors

给定一个n,求n最长有多少个连续自然数的乘积一直可被n整除。

枚举…… 只要循环到sqrt(n)即可。

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <string>
  4. using namespace std;

  5. int getLen(int n, int x) {
  6. int len;
  7.         for (len = 0; n % (x + len) == 0; n /= (x + len++))
  8.         ;
  9.         return len;
  10. }
  11.        
  12. int main() {
  13. int n;
  14.         scanf("%d",&n);
  15.         int len = 0;
  16.         int start = 0;
  17.         for (int i = 2; n / i >= i; ++i) {
  18.                 int may = getLen(n, i);
  19.                 if (may > len) {
  20.                         start = i;
  21.                         len = may;
  22.                 }
  23.         }
  24.         if (len == 0) {
  25.                 start = n;
  26.                 len = 1;
  27.         }
  28.         printf("%d\n",len);
  29.         for (int i = 0; i < len; ++i) {
  30.                 if (i) {
  31.                         putchar('*');
  32.                 }
  33.                 printf("%d", start + i);
  34.         }
  35.         puts("");       
  36.         return 0;
  37. }
复制代码


本帖被以下淘专辑推荐:

我们始终相信IT会持续改造甚至创新传统行业,我们始终全面看好咱们的CS专业!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表