/*算法训练 动态数组使用
时间限制:1.0s 内存限制:512.0MB
提交此题
从键盘读入n个整数,使用动态数组存储所读入的整数,并计算它们的和与平均值分别输出。
要求尽可能使用函数实现程序代码。平均值为小数的只保留其整数部分。
样例输入:
5
3 4 0 0 2
样例输出:
9 1
样例输入:
7
3 2 7 5 2 9 1
样例输出:
29 4
*/
#include "stdio.h"
int main(){
int n,m,sum=0,i,ave;
scanf("%d",&n);
for(i=0;i < n;i++){
scanf("%d",&m);
sum+=m;
}
ave=sum/n;
printf("%d %d\n",sum,ave);
return 0;
}
二、/* 算法训练 最大最小公倍数
时间限制:1.0s 内存限制:256.0MB
提交此题 锦囊1 锦囊2
问题描述
已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。
输入格式
输入一个正整数N。
输出格式
输出一个整数,表示你找到的最小公倍数。
样例输入
9
样例输出
504
数据规模与约定
1 <= N <= 10^6。
*/#include<iostream>
using namespace std;
int main()
{
long long n,ans;
cin>>n;
if(n<=2)
ans=n;
else if(n%2==1)
ans=n*(n-1)*(n-2);
else
{
if(n%3==0)
ans=(n-1)*(n-2)*(n-3);
else
ans=n*(n-1)*(n-3);
}
cout<<ans<<endl;
return 0;
}
三、 /*算法训练 矩阵乘法
时间限制:1.0s 内存限制:512.0MB
提交此题
问题描述
输入两个矩阵,分别是m*s,s*n大小。输出两个矩阵相乘的结果。
输入格式
第一行,空格隔开的三个正整数m,s,n(均不超过200)。
接下来m行,每行s个空格隔开的整数,表示矩阵A(i,j)。
接下来s行,每行n个空格隔开的整数,表示矩阵B(i,j)。
输出格式
m行,每行n个空格隔开的整数,输出相乘後的矩阵C(i,j)的值。
样例输入
2 3 2
1 0 -1
1 1 -3
0 3
1 2
3 1
样例输出
-3 2
-8 2
提示
矩阵C应该是m行n列,其中C(i,j)等于矩阵A第i行行向量与矩阵B第j列列向量的内积。
例如样例中C(1,1)=(1,0,-1)*(0,1,3) = 1 * 0 +0*1+(-1)*3=-3
*/
#include <stdio.h>
int main()
{
int m,s,n,a[200][200],b[200][200],c[200][200]={0},i,j,k;
scanf("%d%d%d",&m,&s,&n);
for (i=0;i<m;i++)
for (j=0;j<s;j++)
scanf("%d",&a[i][j]);
for (i=0;i<s;i++)
for (j=0;j<n;j++)
scanf("%d",&b[i][j]);
for (i=0;i<m;i++)
for (k=0;k<n;k++)
for (j=0;j<s;j++)
c[i][k]+=a[i][j]*b[j][k];
for (i=0;i<m;i++)
{
for (j=0;j<n;j++)
printf("%d ",c[i][j]);
putchar('\n');
}
return 0;
}