• poj 1060


    http://poj.org/problem?id=1060

    题意:多项式的运算的题目,不过这个运算有个特点,就是只要是同项的多项式,无论相加还是相减,都为0,给你三个多项式,分别为a,b,c。

    要你求(a*b)%c。

    思路:首先吧a*b算出来,然后,求某个项数乘以c会等于a*b的,然后把a*b的最大的幂降到c以下,求出来的就是答案。

     1 #include <stdio.h>
     2 #include <iostream>
     3 #include <string.h>
     4 
     5 #define me(x) memset(x,0,sizeof(x))
     6 
     7 int a[2009],b[2009],c[2009],d[2009];
     8 
     9 int main()
    10 {
    11     int n,ade,bde,cde,dde;
    12     scanf("%d",&n);
    13     while(n--)
    14     {
    15         me(a),me(b),me(c),me(d);
    16         scanf("%d",&ade);
    17         for(int j=--ade;j>=0;j--)      //这里是为了把幂和其位置相等,便于乘法计算。
    18             scanf("%d",&a[j]);
    19         scanf("%d",&bde);
    20         for(int j=--bde;j>=0;j--)
    21             scanf("%d",&b[j]);
    22         scanf("%d",&cde);
    23         for(int j=--cde;j>=0;j--)
    24             scanf("%d",&c[j]);
    25         for(int i=ade;i>=0;i--)
    26             for(int j=bde;j>=0;j--)
    27             {
    28                 if(a[i]&&b[j]){             //多项式的乘法,这里还要用上那个他给定你的多项式运算的规则。
    29                     if(d[i+j]) d[i+j]=0;
    30                     else d[i+j]=1;
    31                 }
    32             }
    33         dde=ade+bde;      //d是a*b的答案。dde也就是说这个答案的最高次幂是多少。
    34         while(dde>=cde)          //把d的最高次幂比c小。
    35         {
    36             int tmp;
    37             for(int i=cde;i>=0;i--)   
    38 if(c[i]){ 39 if(d[dde+i-cde]) d[dde+i-cde]=0; 40 else d[dde+i-cde]=1; 41 } 42 for(int i=dde;i>=0;i--) //找d的最高次幂。 43 if(d[i]) { 44 dde=i; 45 break; 46 } 47 } 48 printf("%d",dde+1); 49 for(int i=dde;i>=0;i--) 50 printf(" %d",d[i]); 51 printf(" "); 52 } 53 return 0; 54 }
  • 相关阅读:
    leetcode 746. 使用最小花费爬楼梯
    leetcode 474.一和零
    leetcode 221.最大正方形
    leetcode 525.连续数组
    leetcode 32.最长有效括号
    leetcode 46.全排列
    如何把word文档导入到数据库中——java POI
    leetcode 198.打家劫舍
    leetcode 581.最短无序连续子数组
    02需求工程-软件建模与分析阅读笔记之二
  • 原文地址:https://www.cnblogs.com/Tree-dream/p/5704133.html
Copyright © 2020-2023  润新知