zoukankan      html  css  js  c++  java
  • 长脖子鹿省选模拟赛 [LnOI2019SP]快速多项式变换(FPT)

    本片题解设计两种解法

    果然是签到题...

    因为返回值问题T了好久...

    第一眼:搜索大水题?

     然后...竟然A了

     1 #include<cstdio>
     2 #include<queue>
     3 #include<iostream>
     4 #include<cstring>
     5 #define int long long
     6 using namespace std;
     7 inline int read(){
     8     int ans=0,f=1;char chr=getchar();
     9     while(!isdigit(chr)){if(chr=='-') f=-1;chr=getchar();}
    10     while(isdigit(chr)){ans=(ans<<3)+(ans<<1)+chr-48;chr=getchar();}
    11     return ans*f;
    12 }int fm,m,tot,a[105],x,ff,p[105],q[105];
    13 void dfs(int x,int now){
    14     if(ff) return;
    15     if(x==0&&now>=m) return;
    16     if(now<m){
    17         ff=1;
    18         int t=100;
    19         while(p[t]==0) t--;
    20         cout<<t+1<<endl<<now<<" ";
    21         for(int i=1;i<=t;i++) cout<<p[i]<<" ";
    22         return;
    23     }
    24     int t=now/a[x];
    25     for(int i=t;i>=0;i--)    p[x]=i,dfs(x-1,now-a[x]*i);
    26 }
    27 signed main(){
    28     m=read(),fm=read();
    29     x=1;a[0]=1;
    30     while(x<fm&&tot<=101){a[++tot]=x*m;x=x*m;}
    31     dfs(tot,fm);
    32     return 0;
    33 }

     但其实只要分析一下,就发现式子跟进制转换有很大关系啊,我们只要把fm当做m进制数来处理即可

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<cstring>
     4 #include<cmath>
     5 #include<algorithm>
     6 #include<cstdlib> 
     7 #include<ctime>
     8 #define int long long
     9 using namespace std;
    10 inline int read(){
    11     int ans=0,f=1;char chr=getchar();
    12     while(!isdigit(chr)){if(chr=='-') f=-1;chr=getchar();}
    13     while(isdigit(chr)){ans=(ans<<3)+(ans<<1)+chr-48;chr=getchar();}
    14     return ans*f;
    15 }void write(long long x){
    16     if(x < 0) putchar('-'),x = -x;
    17     if(x > 9) write(x / 10);
    18     putchar(x % 10 + '0');
    19 }int n,m,a[505],tot;
    20 signed main(){
    21     m=read(),n=read();
    22     while(n){a[++tot]=n%m;n/=m;}
    23     printf("%d
    ",tot);
    24     for(int i=1;i<=tot;i++)write(a[i]),putchar(' ');
    25     return 0;
    26 }
  • 相关阅读:
    python初学者学习工具安装教程&安装步骤详解
    Django面试题
    数据库-面试题
    Python面试题
    Python 内置函数&filter()&map()&reduce()&sorted()
    Python匿名函数(lambda函数)
    Python中两大神器&exec() &eval()
    面向对象&从这里开始我们将不再是纯小白
    软件开发程序猿日常必备,现用现查&日志记录
    如何去写项目的readme&链接
  • 原文地址:https://www.cnblogs.com/zhenglw/p/10505881.html
Copyright © 2011-2022 走看看