加与乘

噢莫加纳加加加  •  28天前


#include <bits/stdc++.h>
using namespace std;
int n,q;
long long a[200005];//数
char op[200005];//操作符号
long long p[200005];
long long d[200005];
long long m[200005];
long long mod=1000000007;
long long b=1;//倍数
int main()
{
    cin>>n>>q;
    for(int i=1;i<=q;i++){
        cin>>op[i];
        if (op[i]=='+'){
            cin>>p[i]>>d[i];
        }else{
            cin>>m[i];
        }
    }
    for(int i=q;i>=1;i--){//从后往前循环
        if (op[i]=='*'){//如果是乘,b变成之前所有数的倍数
            b*=m[i];
            b%=mod;
        }else {//加就加上数乘以它往后的所有倍数
            a[p[i]]+=d[i]*b;
            a[p[i]]%=mod;
        }
    }
    for(int i=1;i<=n;i++){
        cout<<a[i]<<" ";
    }
    return 0;
 

include <bits/stdc++.h>

using namespace std; int n,q; long long a[200005];//数 char op[200005];//操作符号 long long p[200005]; long long d[200005]; long long m[200005]; long long mod=1000000007; long long b=1;//倍数 int main() {

cin>>n>>q;
for(int i=1;i<=q;i++){
    cin>>op[i];
    if (op[i]=='+'){
        cin>>p[i]>>d[i];
    }else{
        cin>>m[i];
    }
}
for(int i=q;i>=1;i--){//从后往前循环
    if (op[i]=='*'){//如果是乘,b变成之前所有数的倍数
        b*=m[i];
        b%=mod;
    }else {//加就加上数乘以它往后的所有倍数
        a[p[i]]+=d[i]*b;
        a[p[i]]%=mod;
    }
}
for(int i=1;i<=n;i++){
    cout<<a[i]<<" ";
}
return 0;


评论:

请先登录,才能进行评论