算法1:采用两个循环语句实现组合
问题:在运行的时候,如果把cin>>N这句放在下面那句的下面,输入框直接闪退?
#include<bits/stdc++.h>
using namespace std;
int main(){
int N;
cin>>N;
int a[N],sum=0;
for(int i=0;i<N;i++)
cin>>a[i];
for(int i=0;i<N;i++)
for(int j=0;j<N;j++)
if(i!=j)
sum+=a[i]*10+a[j];
cout<<sum<<endl;
return 0;
}
算法2:每一个输入的数,都能在十位上和个位上对sum产生效果。通俗点说,如果输入3 2 5 8 ,那么对于2来说,它在十位上的数字是25、28,对sum的累加值是2 * 10 * (N - 1);个位上的数是52、58,对sum的累加值是2 * (N - 1);
#include<bits/stdc++.h>
using namespace std;
int main(){
int N,sum=0;
cin>>N;
int a[999];
for(int i=0;i<N;i++)
cin>>a[i];
for(int i=0;i<N;i++)
sum+=10*a[i]*(N-1)+(N-1)*a[i];
cout<<sum<<endl;
}