• 【PAT甲级】1096 Consecutive Factors (20 分)


    题意:

    输入一个int范围内的正整数,输出它最多可以被分解为多少个连续的因子并输出这些因子以*连接。

    trick:

    测试点5包含N本身是一个素数的数据,此时应当输出1并把N输出。

    测试点5包含一个2e9以上的int整数,此时最好把n当作long long 否则以下代码会运行超时。

    AAAAAccepted code:

     1 #define HAVE_STRUCT_TIMESPEC
     2 #include<bits/stdc++.h>
     3 using namespace std;
     4 int ans[100007][37];
     5 int main(){
     6     ios::sync_with_stdio(false);
     7     cin.tie(NULL);
     8     cout.tie(NULL);
     9     long long n;
    10     cin>>n;
    11     long long tamp=0;
    12     int num=1;
    13     int cnt=0;
    14     int mx=0;
    15     int pos=0;
    16     for(long long j=2;j*j<=n;++j){
    17         tamp=n;
    18         for(long long i=j;i*i<=n;++i)
    19             if(tamp%i==0){
    20                 tamp/=i;
    21                 ans[num][++cnt]=i;
    22             }
    23             else
    24                 break;
    25         if(cnt>mx){
    26             mx=cnt;
    27             pos=num;
    28         }
    29         ++num;
    30         cnt=0;
    31     }
    32     if(!mx){
    33         cout<<"1
    "<<n;
    34         return 0;
    35     }
    36     else{
    37         cout<<mx<<"
    ";
    38         for(int i=1;i<=mx;++i){
    39             cout<<ans[pos][i];
    40             if(i<mx)
    41                 cout<<"*";
    42         }
    43     }
    44     return 0;
    45 }
    保持热爱 不懈努力 不试试看怎么知道会失败呢(划掉) 世上无难事 只要肯放弃(划掉)
  • 相关阅读:
    青岛理工大学邀请赛总结
    HDU 1232 并查集/dfs
    HDU 1556
    HDU 5228
    POJ1011
    线段树(数组实现)
    NOIP2008 普及组T1 ISBN号码 解题报告-S.B.S.
    NOIP2008 普及组T4 立体图 解题报告-S.B.S.(施工未完成)
    noip2008普及组4题题解-rLq
    noip2008普及组3题题解-rLq
  • 原文地址:https://www.cnblogs.com/ldudxy/p/11913693.html
Copyright © 2020-2023  润新知