#include<iostream>
#include<cstring>
#include<cmath>
#include<cstdio>
using namespace std;
int a[1000001]={0};
void init()
{
for(int i=1;i<1000001;i++)
{
for(int j=1;i*j<1000001;j++)
{
a[i*j]++;
}
}
}
int main(){
int n;
init();
while(scanf("%d",&n)!=-1)
{
if(a[n]==2)
{
printf("1 1\n");
continue;
}
int flag;
for(int i=2;;i++)
{
if(n%i==0)
{
flag=i;
break;
}
}
printf("%d %d\n",a[n]-1,n/flag);
}
return 0;
}
FZU1607 Greedy division(逆向思维)
最新推荐文章于 2021-06-29 18:54:46 发布
本文介绍了一个算法挑战,目标是计算将一定数量的金币等分成多个部分的方法数量,并确保获得尽可能多的金币。输入为金币总数,输出为分配方案数及最大金币数。
146

被折叠的 条评论
为什么被折叠?



