• 省赛13 Alice and Bob(二进制,找规律)


    题意:多项式相乘,(a0x+1)(a1x^2+1)(a2x^4+1),问x的m次方的系数是多少,当时没做出来,搜的某大神的博客,好理解。

    思路:多列几个式子就能明白规律了:

    (a0x+1)(a1x^2+1)(a2x^4+1)

    =a0a1a2x^7+a1a2x^6+a0a2x^5+a2x^4+a0a1x^3+a1x^2+a0x+1

    列出来后发现正好该数化为二进制,如果为1,则相乘

    7:a0a1a2   即1+2+4

    6:a1a2      即2+4

    5:a0a2      即1+4

    4:a2         即4

    3:a0a1     即1+2

    2:a1        即2

    1:a0        即1

     1 #include <iostream>
     2 #include<cstdio>
     3 #include<string.h>
     4 using namespace std;
     5 
     6 #define maxn 105
     7 
     8 int a[maxn],pos[maxn];
     9 
    10 int main()
    11 {
    12     int t,n,i,j,q,ans;
    13     long long p;//因为0 <= p <= 1234567898765432
    14     scanf("%d",&t);
    15     while(t--)
    16     {
    17         scanf("%d",&n);
    18         memset(a,0,sizeof(a));//这个很妙,比如n=3,则p>=8以后都要=0,就靠这一句
    19         for(i=0;i<n;i++)
    20         {
    21             scanf("%d",&a[i]);
    22         }
    23         scanf("%d",&q);
    24         while(q--)
    25         {
    26             scanf("%lld",&p);
    27             if(p==0)
    28             {
    29                 printf("1
    ");//别忘了
    30                 continue;
    31             }
    32             memset(pos,0,sizeof(pos));
    33             i=0;
    34             while(p)
    35             {
    36                 pos[i++]=p%2;//求p转化为二进制
    37                 p/=2;
    38             }
    39             ans=1;
    40             for(j=0;j<i;j++)
    41             {
    42                 if(pos[j])//如果那一位二进制=1
    43                 {
    44                     ans=ans*a[j]%2012;//则就是那几位相乘,一边乘一遍取余2012
    45                 }
    46             }
    47              printf("%d
    ",ans);
    48         }
    49     }
    50     return 0;
    51 }
    View Code
  • 相关阅读:
    java 和.net 开发平台的感受(菜鸟级)
    结构体应用统计学生成绩
    实验十 链表
    绘制抛物线(带比例缩放)
    上下三角矩阵的输出
    结构体应用分类与索引
    笔试题之数据库
    动态规划求回文给定字符串,插入字符形成回文
    三行九个点,用4条线段连接(扩展,用3条,用1条)
    名言记录
  • 原文地址:https://www.cnblogs.com/ACMERY/p/4486078.html
Copyright © 2020-2023  润新知