Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- ifstream f("ecu.in");
- ofstream g("ecu.out");
- const int NMAX = 35;
- int n,m;
- double x[NMAX], p[NMAX], y[NMAX], d[NMAX];
- double mat[NMAX][NMAX], c[NMAX][NMAX], ans[NMAX][NMAX];
- void afisaremat(double mat[NMAX][NMAX]){
- int i,j;
- for(i = 1 ; i <= n + 1 ; i++){
- for(j = 1 ; j <= n + 1 ; j++)
- g << mat[i][j] << " ";
- g << "\n";
- }
- }
- void inm(double a[NMAX][NMAX], double b[NMAX][NMAX]){
- int i,j,k;
- for(i = 1 ; i <= n + 1 ; i++){
- for(j = 1 ; j <= n + 1 ; j++){
- c[i][j] = 0;
- for(k = 1 ; k <= n + 1 ; k++)
- c[i][j] += a[i][k] * b[k][j];
- }
- }
- for(i = 1 ; i <= n + 1 ; i++)
- for(j = 1 ; j <= n + 1 ; j++)
- a[i][j] = c[i][j];
- }
- void power(int p){
- int i,j;
- for(i = 1 ; i <= n + 1 ; i++)
- for(j = 1 ; j <= n + 1 ; j++)
- ans[i][j] = mat[i][j];
- while(p){
- if(p & 1){
- p--;
- inm(ans,mat);
- }
- inm(ans, ans);
- p /= 2;
- }
- for(i = 1 ; i <= n + 1; i++)
- for(j = 1 ; j <= n + 1 ; j++)
- mat[i][j] = ans[i][j];
- }
- void alh(){
- int i,j;
- for(i = 1 ; i <= n ; i++){
- d[i] = 0;
- for(j = 1 ; j <= n + 1 ; j++)
- d[i] += (x[j] * mat[j][i]);
- }
- }
- int main(){
- int i,j;
- f >> n >> m;
- for(i = 1 ; i <= n ; i++)
- f >> x[i];
- for(i = 1 ; i <= n ; i++)
- f >> p[i];
- for(i = 1 ; i <= n ; i++)
- f >> y[i];
- for(i = 1 ; i < n ; i++){
- mat[i][i] = p[i];
- mat[i + 1][i] = 1 - p[i + 1];
- mat[n + 1][i] = y[i];
- //mat[i][n + 1] = 1;
- }
- //mat[n][n + 1] = 1;
- mat[n + 1][n + 1] = 1;
- mat[1][n] = 1 - p[1];
- mat[n][n] = p[n];
- mat[n + 1][n] = y[n];
- x[n + 1] = 1;
- power(2);
- //afisaremat(mat);
- alh();
- for(i = 1 ; i <= n ; i++)
- g << d[i] << " ";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement