at3107

Untitled

Sep 26th, 2020 (edited)
775
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int M=(int)1e9+7;
  4. int ad(int x,int y){
  5.     return (x+y)%M;
  6. }
  7. int mul(int x,int y){
  8.     return (x*y)%M;
  9. }
  10. int main(){
  11.     ios_base::sync_with_stdio(false);
  12.     cin.tie(0);
  13.     cout.tie(0);
  14.     int t;
  15.     cin>>t;
  16.     while(t--){
  17.         int n;
  18.         cin>>n;
  19.         vector<int>a(n+1);
  20.         for(int i=1;i<=n;i++)
  21.             cin>>a[i];
  22.         int q;
  23.         cin>>q;
  24.         int rtn=sqrt(n)+1;
  25.         vector<vector<int> > dp(n+2,vector<int>(rtn)),dp1(n+2,vector<int>(rtn));
  26.         for(int i=n;i>=1;i--)
  27.             for(int j=1;j<rtn;j++){
  28.                 dp[i][j]=ad(a[i],((j+i)<=n?dp[i+j][j]:0));
  29.                 dp1[i][j]=mul(a[i],((j+i)<=n?dp1[i+j][j]:1));
  30.             }
  31.         while(q--){
  32.             int c,x,y;
  33.             cin>>c>>x>>y;
  34.             if(y>=rtn){
  35.                 if(c==0){
  36.                     int ans=0;
  37.                     for(int i=x;i<=n;i+=y)
  38.                         ans=ad(ans,a[i]);
  39.                     cout<<ans<<endl;
  40.                 }
  41.                 else{
  42.                     int ans=1;
  43.                     for(int i=x;i<=n;i+=y)
  44.                         ans=mul(ans,a[i]);
  45.                     cout<<ans<<endl;
  46.                 }
  47.             }
  48.             else{
  49.                 if(c==0)
  50.                     cout<<dp[x][y]<<endl;
  51.                 else
  52.                     cout<<dp1[x][y]<<endl;
  53.             }
  54.         }
  55.     }
  56. }
  57.  
  58.  
  59. #include<bits/stdc++.h>
  60. using namespace std;
  61. int main(){
  62.     ios_base::sync_with_stdio(false);
  63.     cin.tie(0);
  64.     cout.tie(0);
  65.     int t;
  66.     cin>>t;
  67.     while(t--){
  68.         long long a,b,k,sum;
  69.         cin>>a>>b>>k;
  70.         sum=a+b;
  71.         int res=1;
  72.         while(k>0){
  73.             if(k&1)
  74.                 res=(2*res)%sum;
  75.             res=(res*res)%sum;
  76.             k>>=1;
  77.         }
  78.         a=(a*res)%sum;
  79.         b=sum-a;
  80.         cout<<min(a,b)<<endl;
  81.     }
  82. }
RAW Paste Data