• JXNU acm选拔赛 壮壮的数组


    壮壮的数组

    Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other)
    Total Submission(s) : 18   Accepted Submission(s) : 8

    Font: Times New Roman | Verdana | Georgia

    Font Size: ← →

    Problem Description

    A,B,C为三个元素个数为n的数组,A={a1,a2,a3...an},B={b1,b2,b3...bn},C={c1,c2,c3...cn};
    已知A、B数组,而且有ci等于ai或bi(1<=i<=n),毫无疑问,C数组有很多种组合。
    但是zz不希望C数组全由A数组或者B数组组成,每一种组合都有一个K值,K=c1*c2*c3*...*cn。
    现在需要你求出每一种组合对应的K值,并将它们加起来的结果。这个结果可能会很大,请将答案对1e9+7取模。
    例如A={1,2,3} B={2,2,4}。
    C数组可能为{a1,b2,b3} {b1,a2,b3} {b1,b2,a3} {a1,a2,b3} {a1,b2,a3} {b1,a2,a3}
    K值分别为8,16,12,8,6,12,所以你应该输出62。

    大量输入,建议使用scanf

    Input

    输入数据包含多个测试实例,每个测试实例的第一行只有一个整数n(1<=n<=100000),表示A,B,C数组元素个数,第二行有n个数据表示a1 a2 a3...an,第三行有n个数据表示b1 b2 b3...bn,(1<=ai,bi<=1e9)。处理到文件的结束。

    Output

    对于每个测试实例,输出一行数据表示问题的答案,请将答案对1e9+7取模。

    Sample Input

    3
    1 2 3
    2 2 4
    1
    3
    4
    

    Sample Output

    62
    0

    解题思路:这是个数学题,分析可以知道这么个式子。
    K=(a[1]+b[1])*(a[2]+b[2])*...*(a[n]+b[n]) - a[1]*a[2]*...*a[n] - b[1]*b[2]*...*b[n];

    因为数据会很大所以对1e9+7取余。
    ps:这题我猜是数学,但是无奈推不出式子。。。
    代码:

    
    
     1 #include<iostream>
     2 #include<stdio.h>
     3 using namespace std;
     4 int a[100005],b[100005];
     5 long long INF=1e9+7;
     6 int main()
     7 {
     8     int n;
     9     while(~scanf("%d",&n)){
    10         for(int i=1;i<=n;i++)
    11             scanf("%d",&a[i]);
    12         for(int i=1;i<=n;i++)
    13             scanf("%d",&b[i]);
    14         long long  ans=1,cnt=1,sum=1;
    15         for(int i=1;i<=n;i++){
    16             ans*=a[i];
    17             ans%=INF;
    18         }
    19         for(int i=1;i<=n;i++){
    20             cnt*=b[i];
    21             cnt%=INF;
    22         }
    23         for(int i=1;i<=n;i++){
    24             sum*=(a[i]+b[i]);
    25             sum%=INF;
    26         }
    27         sum=(sum+INF-ans+INF-cnt)%INF;
    28         cout<<sum<<endl;
    29     }
    30     return 0;
    31 }
    
    
    
    
    
    
    
  • 相关阅读:
    BZOJ 2002 [Hnoi2010]Bounce 弹飞绵羊 ——Link-Cut Tree
    BZOJ 2049 [Sdoi2008]Cave 洞穴勘测 ——Link-Cut Tree
    hdu
    hdu
    hdu
    hdu
    hdu
    hdu
    hdu
    hdu
  • 原文地址:https://www.cnblogs.com/ISGuXing/p/7258924.html
Copyright © 2020-2023  润新知