链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
讨伐魔王的路上总是充满阻碍,作为魔王的下属,为了更好的辅佐魔王,史莱姆里曼想知道自己分裂能力的最大分裂数量,已知里曼的生命值为nnn,里曼每次分裂可以变成两个生命值分别为a,b的自己,a,b均不为1的正整数且满足a×b=n,分裂后的史莱姆可以继续分裂,求经过最多次分裂后史莱姆的数量。
输入描述:
第一行:一个整数nnn。 数据满足:1≤n≤957181
输出描述:
共一行:一个数字,表示里曼的最多分裂数量。
示例1
输入
复制4
4
输出
复制2
2
这是广东工业大学竞赛的一道题,回归正题,这题就将n拆成小的数,越小越好,这样就能尽可能的多,特别注意n等于2时不能再分啦。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin >> n;
int i,k;
int s=1; // 开始时有一个
for(k=1;k<=1000;k++) // n的范围给你啦,不会超过1000次循环
{
for(i=2;i<n;i++) // 开始将n拆解
{
if(n%i==0&&n!=2)
{
s++; // 拆一次就多拉一个
n=n/i;
break;
}
}
}
cout << s;
return 0;
}