小白算法练习 PAT Consecutive Factors 暴力|暴力中比较好的题目
2018-03-01 15:40
309 查看
Among all the factors of a positive integer N, there may exist several consecutive numbers. For example, 630 can be factored as 3*5*6*7, where 5, 6, and 7 are the three consecutive numbers. Now given any positive N, you are supposed to find the maximum number
of consecutive factors, and list the smallest sequence of the consecutive factors.
Input Specification:
Each input file contains one test case, which gives the integer N (1<N<231).
Output Specification:
For each test case, print in the first line the maximum number of consecutive factors. Then in the second line, print the smallest sequence of the consecutive factors in the format "factor[1]*factor[2]*...*factor[k]", where the factors are listed in increasing
order, and 1 is NOT included.
Sample Input:
Sample Output:
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
long N,sum=0;scanf("%d",&N);
int res,c;
int maxm=0;
for(int i=2;i<=sqrt(N);i++)
{
int t=i;c=0;
sum=N;
while(sum%t==0)
{
sum=sum/t;
t=t+1;
c=c+1;
}
if(t-i>maxm)
{
res=i;
maxm=c;
}
}
if(maxm==0)
{
cout<<1<<endl;
cout<<N<<endl;
return 0;
}
printf("%d\n",maxm);
for(int i=res;i<res+maxm;i++)
{
cout<<i;
if(i!=res+maxm-1)
{
cout<<"*";
}
}
cout<<endl;
return 0;
}
of consecutive factors, and list the smallest sequence of the consecutive factors.
Input Specification:
Each input file contains one test case, which gives the integer N (1<N<231).
Output Specification:
For each test case, print in the first line the maximum number of consecutive factors. Then in the second line, print the smallest sequence of the consecutive factors in the format "factor[1]*factor[2]*...*factor[k]", where the factors are listed in increasing
order, and 1 is NOT included.
Sample Input:
630
Sample Output:
3 5*6*7
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
long N,sum=0;scanf("%d",&N);
int res,c;
int maxm=0;
for(int i=2;i<=sqrt(N);i++)
{
int t=i;c=0;
sum=N;
while(sum%t==0)
{
sum=sum/t;
t=t+1;
c=c+1;
}
if(t-i>maxm)
{
res=i;
maxm=c;
}
}
if(maxm==0)
{
cout<<1<<endl;
cout<<N<<endl;
return 0;
}
printf("%d\n",maxm);
for(int i=res;i<res+maxm;i++)
{
cout<<i;
if(i!=res+maxm-1)
{
cout<<"*";
}
}
cout<<endl;
return 0;
}
相关文章推荐
- PAT程序设计练习——甲级1003(任意两个城市最短距离、Floyd最短路径算法)
- 小白算法练习 dp练习001-区间dp NYOJ 石子合并,整数划分 POJ Brackets
- 小白算法练习 归并排序 POJ Brainman lanqiao
- poj 2236-小白算法练习 并查集 Wireless Network
- lanqiao 小白算法练习 k好数 数位dp
- 阿里大数据题目,请问怎么设计算法比较好呢
- poj 1088-小白算法练习 滑雪 dfs记忆化
- 简单算法练习-题目1004:Median
- 小白算法练习 简单背包专题003 完全背包 hdu lanqiao 包子凑数 dp
- poj 2407 小白算法练习 Relatives 数论 欧拉函数
- 2018年全国多校算法寒假训练营练习比赛(第五场)比赛题目题解
- poj 1273-小白算法练习 Drainage Ditches 网络流
- 小白算法练习 hdu courses 1083 匈牙利算法 dfs 邻接矩阵 vector模拟邻接表
- 小白算法练习 lanqiao2017 国赛 发现环 tarjan 无向图
- PAT练习基础编程题目之求单链表结点的阶乘和
- PAT练习基础编程题目之阶乘计算升级版
- 小白算法练习 hdu swap 二分图 最大匹配
- 算法题目练习
- 小白算法练习 树状dp caioj 二分苹果树
- 算法设计与分析题目练习五:求最大值(遗传算法)