问题描述:
给出一个正整数n,求一个和最大的序列a0,a1,a2,……,ap,满足n=a0>a1>a2>……>ap且ai+1是ai的约数,输出a1+a2+……+ap的最大值
输入格式:
输入仅一行,包含一个正整数n
输出格式:
一个正整数,表示最大的序列和,即a1+a2+……+ap的最大值
样例输入:
10
样例输出:
6
数据规模和约定:
1<n<=10^6
样例说明:
p=2
a0=10,a1=5,a2=1,6=5+1
前言:
水题,……
开始:
从 n - 1 开始递减,是约数则累加然后更新,不然继续递减。
附上代码:
#include<iostream>
using namespace std;
int n = 0;
long long int add = 0;
int main()
{
cin >> n;
for (int i = n - 1; i >= 1; i--)
{
if (n % i == 0)
{
add += i;
n = i;
i--;
}
}
cout << add;
return 0;
}
结束:
……