zoukankan      html  css  js  c++  java
  • 壮壮的数组

    壮壮的数组

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

    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
    
    这题就找规律。
    但是挺难找的,耐心啊;
    结果就是求(a1+b1)*(a2+b2)*....*(an+bn)-a1*a2...*an-b1*b2*...*bn

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #define mem(a) memset(a,0,sizeof(a))
     5 #define ll long long int
     6 #define M 100005
     7 #define Mod 1000000007
     8 #define mem(a) memset(a,0,sizeof(a))
     9 using namespace std;
    10 ll a[M],b[M],c[M];
    11 int main(){
    12     int n;
    13     while(scanf("%d",&n)!=EOF){
    14         ll sum,cnt,ans;
    15         sum=cnt=1;
    16         ans=1;
    17         for(int i=0;i<n;i++){
    18             scanf("%lld",&a[i]);
    19             sum=(sum*a[i])%Mod;
    20             c[i]=a[i];
    21         }
    22         for(int i=0;i<n;i++){
    23             scanf("%lld",&b[i]);
    24             cnt=(cnt*b[i])%Mod;
    25             c[i]+=b[i];
    26         }
    27         for(int i=0;i<n;i++){
    28             ans=(c[i]*ans)%Mod;
    29         }
    30         printf("%lld
    ",(ans-cnt-sum+Mod+Mod)%Mod);
    31         mem(a);
    32         mem(b);
    33         mem(c);
    34     }
    35     return 0;
    36 }


  • 相关阅读:
    17. Letter Combinations of a Phone Number
    16. 3Sum Closest
    15. 3Sum
    14. Longest Common Prefix
    13. Roman to Integer
    12. Integer to Roman
    11. Container With Most Water
    10. Regular Expression Matching
    9. Palindrome Number
    8. String to Integer (atoi)
  • 原文地址:https://www.cnblogs.com/zllwxm123/p/7260307.html
Copyright © 2011-2022 走看看