Fox Ciel is playing a game with numbers now.
Ciel has n positive integers: x1,x2, ...,xn. She can do the following operation as many times as needed: select two different indexesi and j such thatxi >xj hold, and then apply assignmentxi =xi -xj. The goal is to make the sum of all numbers as small as possible.
Please help Ciel to find this minimal sum.
The first line contains an integer n (2 ≤ n ≤ 100). Then the second line containsn integers: x1,x2, ...,xn (1 ≤ xi ≤ 100).
Output a single integer — the required minimal sum.
2 1 2
2
3 2 4 6
6
2 12 18
12
5 45 12 27 30 18
15
Note
In the first example the optimal way is to do the assignment: x2 =x2 -x1.
In the second example the optimal sequence of operations is: x3 =x3 -x2,x2 =x2 -x1.
思路:这个题的最后结果一定是n个相同的数,所以在n个数不相等的情况下进行循环,让每一个数减去比他小的。。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,m,i,j;
int a[100];
while(scanf("%d",&n)!=EOF)
{
for(i=0; i<n; i++)
{
scanf("%d",&a[i]);
}
int s=0;
for(i=0; i<n-1; i++)
{
if(a[i]==a[i+1])
++s;
}
while(s!=n-1)
{
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
if(i!=j)
{
if(a[i]>a[j])
a[i]=a[i]-a[j];
}
}
}
s=0;
for(i=0; i<n-1; i++)
{
if(a[i]==a[i+1])
++s;
}
}
printf("%d\n",n*a[0]);
}
return 0;
}