zoukankan      html  css  js  c++  java
  • PAT A1096 Consecutive Factors


    思路分析:如果输入n为素数,那么因数只可能为自己,因为题目说了不包括1。故第一行输出1,第二行输出n。
    如果一个数为合数,则该数的因数的最大上限为sqrt(n)。
    使用一个二重循环,外层循环枚举i从2到sqrt(n)表示枚举第一个因数。内层循环枚举j从i到sqrt(n)表示所有连续的因数
    temp为当前所有因数乘积(因数不相同),temp *= j。当(n%temp != 0)时或者n>temp时退出循环,然后看当前因子个数templen是否比mlen要大,大则更新当前mlen,并将right设置为i。

    教训:写判断条件要写完整不要刻意减少步骤,看似简略但可读性降低,得不偿失。

    #include<cstdio>
    #include<math.h>
    int main(){
        long long n;
        scanf("%lld",&n);
        int templen = 0;
        int mlen = 0;
        long long temp = 0;//记录中间值
        long long half = (long long)sqrt(n);
        long long right;
        for(long long i = 2;i <=half;i++){
            if(n%i==0){//找到整除第一个数,开始尝试后面的数字
                    temp = i;
                    templen = 1; 
                    if(mlen==0){
                        mlen = 1;
                        right = i;
                    }
                    for(long long j = i+1;j <=half;j++){//从第二个数开始尝试
                         temp = temp*j;
                        if(temp > n){//越界,失败
                            break;
                        }else if(n%temp==0){
                            templen++;
                            if(templen > mlen){
                                mlen = templen;
                                right = j;
                            }
                        }else{//这个数字不行,失败
                            break;
                        }
                    }
                }else{
                    continue;
                }
           
        }
        
        //print
        if(mlen == 0) {
            printf("1
    ");
            printf("%lld",n);
        }else{
            printf("%d
    ",mlen);
            for(int i = 1;i <= mlen;i++){
                printf("%lld",right-mlen +i);
                if(i<=mlen-1) printf("*");
            }
        }
    }
    
  • 相关阅读:
    素敵な日本人 2-1
    十年目のバレンタインデー のほか
    水晶の数珠  3
    水晶の数珠  2
    STM32 USB HID BarCodeReader不兼容问题的解决
    水晶の数珠 1
    クリスマスミステリ 2
    クリスマスミステリ 1
    サファイア奇跡 3
    感悟成功
  • 原文地址:https://www.cnblogs.com/shuibeng/p/13562739.html
Copyright © 2011-2022 走看看