• acdream 1028 第三次群赛Problem G: Multiplication


    题目这样的:

       给你这个公式个A、B   求C 。  len(A)=len(b)=n

    在计算C[k] 时, i 和j 至少有一个等于 k,当 i 和 j 不等时,只要乘另一个的前 k-1 项和就行了。

    于是 C[k]=A[k]*SumB[k-1]+B[k]*SumA[k-1]+A[k]*B[k]    mod 10^9+7   注意初始值。

    两个int型变量相乘时,可能会溢出,所以在乘之前要先强制转换成 long long ,为此我还WA了几次~

     1 #include <stdio.h>
     2 const int mod=1000000007;
     3 int n;
     4 int a[100001],b[100001];
     5 int  sa[100001],sb[100001];
     6 int c[100001];
     7 void read(int *p,int *s)
     8 {
     9     p[0]=0;s[0]=0;
    10     for (int i=1;i<=n;++i)
    11    {
    12        scanf("%d",p+i);
    13        s[i]=(s[i-1]+p[i]%mod)%mod;
    14    }
    15 }
    16 int main()
    17 {
    18    scanf("%d",&n);
    19    read(a,sa);
    20    read(b,sb);
    21    for (int i=1;i<=n;++i)
    22    {
    23        long long t1=((long long)a[i]*sb[i-1])%mod;
    24        long long t2=((long long)b[i]*sa[i-1])%mod;
    25        long long t3=(t1+t2+((long long)a[i]*(long long)b[i])%mod)%mod;
    26        c[i]=(int)t3;
    27    }
    28    for (int i=1;i<n;++i) printf("%d ",c[i]);
    29    printf("%d\n",c[n]);
    30 }
  • 相关阅读:
    水平拖拽滚动条
    垂直拖拽滚动条
    网页特效_拖拽案例
    js实现倒计时
    权限控制
    Eclipse 项目有红感叹号
    JBPM简单介绍
    开博有感
    各种正则表达式
    Python中读取目录里的文件并按排序列出
  • 原文地址:https://www.cnblogs.com/wuminye/p/2775624.html
Copyright © 2020-2023  润新知