http://acm.pku.edu.cn/JudgeOnline/problem?id=1032
把一个数分成几个数相加、使得这几个数的长度最大:
#include <stdio.h>
int main()
{
int a[100] = {0};
int number,y,i,sum = 0,k = 0;
while(scanf("%d",&number) != EOF)
{
sum = 0;
k = 0;
for(i = 2; sum <= number;i ++)
{
sum = sum + i;
a[k ++] = i;
}
y = number - (sum - i +1);
if(y >= k - 1)
{
for(i = 0;i < k; i++)
a[i] = a[i] + 1;
y = y - k + 1;
i = k - 2;
while(y != 0)
{
a[i] = a[i] + 1;
y --;
i --;
}
printf("%d",a[0]);
for(i = 1;i < k - 1;i ++)
printf(" %d",a[i]);
printf("/n");
}
else
{
i = k - 1;
y ++;
while(y != 0)
{
a[i] = a[i] + 1;
y --;
i --;
}
printf("%d",a[0]);
for(i = 1;i < k-1;i ++)
printf(" %d",a[i]);
printf("/n");
}
}
return (0);
}
/*
7
3 4
*/