zoukankan      html  css  js  c++  java
  • POJ2527+多项式除法

    模拟一遍即可。

    注意一些特殊情况,见代码。

      1 #include<stdio.h>
      2 #include<stdlib.h>
      3 #include<math.h>
      4 #include<algorithm>
      5 #include<string.h>
      6 using namespace std;
      7 
      8 const int maxn = 10005;
      9 
     10 struct Ploy{
     11     int cnt;//项的数目
     12     int coe[ maxn ];//各项系数
     13     int exp[ maxn ];//各项指数
     14 }a;
     15 struct Ploy2{
     16     int coe1,coe2;
     17     int exp1,exp2;
     18 }b;
     19 struct Ploy3{
     20     int coe,exp;
     21 }tmp;
     22 
     23 bool Judge( int aim ){
     24     //bool f = false;
     25     for( int i=a.cnt-1;i>=0;i-- ){
     26         if( a.coe[i]!=0&&a.exp[i]>=aim ){
     27             //f = true;
     28             return true ;
     29         }
     30     }
     31     return false;
     32 }
     33 
     34 void solve( int n,int k ){
     35     //ans.cnt = 0;
     36     while( 1 ){
     37         //if( Judge(k)==false ) break;
     38         int i;
     39         for( i=a.cnt-1;i>=0;i-- ){
     40             if( a.coe[i]!=0 ){
     41                 tmp.coe = a.coe[i];
     42                 tmp.exp = a.exp[i];
     43                 break;
     44             }
     45         }
     46         if( tmp.exp<k ) break;
     47         int delta_exp = tmp.exp-k;
     48         int delta_coe = tmp.coe;//
     49         b.exp1 = tmp.exp,b.coe1 = tmp.coe;
     50         b.exp2 = delta_exp,b.coe2 = delta_coe;
     51         //bool f1 = false,f2 = false;
     52         for( int i=0;i<a.cnt;i++ ){
     53             if( a.exp[i]==b.exp1 ){
     54                 a.coe[i] -= b.coe1;
     55                 //f1 = true;
     56             }
     57             if( a.exp[i]==b.exp2 ){
     58                 a.coe[i] -= b.coe2;
     59                 //f2 = true;
     60             }
     61         }
     62     }
     63 }
     64 
     65 int main(){
     66     //freopen("in.txt","r",stdin);
     67     //freopen("out.txt","w",stdout);
     68     int n,k;
     69     while( scanf("%d%d",&n,&k)==2 ){
     70         if( n==k&&k==-1 ) break;
     71         a.cnt = 0;
     72         for( int i=0;i<=n;i++ ){
     73             a.cnt ++;
     74             scanf("%d",&a.coe[i]);
     75             a.exp[i] = i;
     76         }
     77         if( k==0 ){
     78             puts("0");
     79             continue;
     80         }
     81         //printf("input
    ");
     82         bool f = false;
     83         for( int i=0;i<a.cnt;i++ ){
     84             if( a.coe[i]!=0 ){
     85                 f = true;
     86                 break;
     87             }
     88         }
     89         if( f==false ) {
     90             puts("0");
     91             continue;
     92         }//多项式全为0
     93         if( k>n ){
     94             for( int i=0;i<a.cnt;i++ ){
     95                 if( i==0 ) printf("%d",a.coe[i]);
     96                 else printf(" %d",a.coe[i]);
     97             }
     98             printf("
    ");
     99             continue;
    100         }//商为0
    101         //printf("solve
    ");
    102         solve( n,k );
    103         f = false;
    104         for( int i=0;i<a.cnt;i++ ){
    105             if( a.coe[i]!=0 ){
    106                 f = true;
    107                 break;
    108             }
    109         }
    110         if( f==false ) {
    111             puts("0");
    112             continue;
    113         }//刚好整除
    114         int pos = a.cnt-1;
    115         for( int i=a.cnt-1;i>=0;i-- ){
    116             if( a.coe[i]!=0 ){
    117                 pos = i;
    118                 break;
    119             }
    120         }
    121         for( int i=0;i<=pos;i++ ){
    122             if( i==0 ) printf("%d",a.coe[i]);
    123             else {
    124                 printf(" %d",a.coe[i]);
    125             }
    126         }
    127         printf("
    ");
    128     }
    129     return 0;
    130 }
    View Code
    keep moving...
  • 相关阅读:
    [转载-声网]18个实时音视频开发中会用到开源项目
    linux shell命令之wc/split及特殊字符
    RTP推流及验证
    Ubuntu18.04提示wifi无法连接
    ubuntu上Android开发环境及依赖项
    HLS playlist典型示例
    ffmpeg-hls实现分析
    AOSP中的HLS协议解析
    使用ffmpeg搭建HLS直播系统
    流媒体之HLS——综述(二)
  • 原文地址:https://www.cnblogs.com/xxx0624/p/3279818.html
Copyright © 2011-2022 走看看