/*算法訓練 動態數組使用?
時間限制: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;?
}? ?