Задача. Дана квадратная матрица порядка n. Получить вектор Ab, где b-вектор, элементы которого вычисляются по формулам:
[latex]b_{i}=\begin{cases}\frac{1}{i^{2}+2} & \text{, if i mod 2=0} \\ \frac{1}{i} & \text{, other case } \end{cases}[/latex]i=(1,…,n).
Тесты:
Вход | Выход | Комментарий |
4 1 2 1 1 1 3 6 9 1 2 1 1 1 6 3 18 |
1.72222 4 1.72222 4 | Пройден |
3 0 0 0 1 1 1 2 2 2 |
0 1.5 3 | Пройден |
4 1 2 2 9 3 4 1 18 1 1 1 1 0 0 0 0 |
2.5 5 1.55556 0 | Пройден |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
#include <iostream> using namespace std; int main() { int n; cin>>n; double b[n]; for (int i=0; i<n; i++) { if((i+1)%2==0) b[i]=1.0/((i+1)*(i+1) + 2); else b[i]=1.0/(i+1); } double A[n][n]; for (int i=0; i<n; i++) for (int j=0; j<n; j++) cin>>A[i][j]; double Ab[n]; for (int i=0; i<n; i++) { Ab[i]=0; for (int j=0; j<n; j++) { Ab[i]+=A[i][j]*b[j]; } } for (int i=0; i<n; i++) cout<<Ab[i]<<" "; return 0; } |
Согласно условию находим вектор b. По формуле [latex]Ab_{i}=\sum_{j=1}^{n}A_{ij}b_{j}[/latex], i=(0,…,n) находим произведение матрицы на вектор.
С работой программы можно ознакомится здесь.
Как и обещал, снижаю оценку за неверное выравнивание строк (на ideone.com все хорошо).