學校oj題 12.19
阿新 • • 發佈:2018-12-26
題目描述
線上性代數、計算幾何中,向量點積是一種十分重要的運算。
給定兩個n維向量a=(a1,a2,…,an)和b=(b1,b2,…,bn),求點積a·b=a1b1+a2b2+…+anbn。
要求定義函式,引數為陣列a,b,求向量a和b的點積並返回計算結果。
未定義函式,不計分。
輸入
第一行是一個整數n。1 <= n <= 1000。
第二行包含n個整數a1,a2,…,an。
第三行包含n個整數b1,b2,…,bn。
相鄰整數之間用單個空格隔開。每個整數的絕對值都不超過1000
輸出
一個整數,即兩個向量的點積結果
樣例輸入
3
1 4 6
2 1 5
樣例輸出
36
很水的題,按照題意來就可以了
AC程式碼如下:
#include <iostream>
using namespace std;
const int maxn=1e3+5;
int a[maxn];
int b[maxn];
int func(int n,int a[],int b[])
{
int sum=0;
for(int i=0;i<n;i++)
sum+=a[i]*b[i]; //計算積
return sum; //最後返回積
}
int main()
{
int n;
cin>>n;
for (int j=0;j<n;j++)
cin>>a[j];
for(int i=0;i<n;i++)
cin>>b[i];
cout<<func(n,a,b)<<endl;
return 0;
}
題目描述
有n個整數,使前面各數順序向後移m個位置,最後m個數變成前面m個數,見圖。寫一函式:實現以上功能,在主函式中輸入n個數和輸出調整後的n個數。
輸入
輸入資料的個數n n個整數移動的位置m
輸出
移動後的n個數
樣例輸入
10
1 2 3 4 5 6 7 8 9 10
2
樣例輸出
9 10 1 2 3 4 5 6 7 8
很水,思考一下其實也不需要模擬交換操作,直接從 n-m那個數開始輸出就可以了
ac程式碼如下:
#include <iostream>
using namespace std;
void print(int n,int m,int a[])
{
for(int i=n-m,j=0;j<n;j++)
cout<<a[(i+j)%n]<<' ';
cout<<endl;
return ;
}
int main()
{
int n,m;
int a[1005];
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
cin>>m;
print(n,m,a);
return 0;
}