• 【洛谷比赛】[LnOI2019]长脖子鹿省选模拟赛 T1 题解


      今天是[LnOI2019]长脖子鹿省选模拟赛的时间,小编表示考的不怎么样,改了半天也只会改第一题,那也先呈上题解吧。

    T1:P5248 [LnOI2019SP]快速多项式变换(FPT)

      一看这题就很手软,没有告诉具体多项式到底有多少项,只好一个一个暴力枚举,但是这也不现实,于是小编就开始骗分,还一分也没骗着。赛后小编看到的题解,才明白这是一道转进制的题,将十进制转换成m进制,m^0,m^1,m^2这不刚好对应上m进制的单位吗?所得结果刚好就是问题的解。那么用短除法模拟算出m进制下f(m)的每一位,输出即可,代码如下:

     1 #include<iostream>
     2 #include<cstdio>
     3 using namespace std;
     4 int m,f,a[10000],k=0;
     5 int main()
     6 {
     7     scanf("%d%d",&m,&f);
     8     //cin>>m>>f;
     9     for(int i=1;;i++)
    10     {
    11         a[++k]=f%m;
    12         f/=m;
    13         if(f==0) break;
    14         
    15     }
    16     printf("%d 
    ",k);
    17     //cout<<k<<endl;
    18     for(int i=1;i<=k;i++)
    19     printf("%d ",a[i]);
    20     //cout<<a[i]<<" ";
    21     return 0;
    22 }

      随便一写发现wa了一大片。

      进过深思熟虑后发现忘了注意数据规模:

       10^18,int不爆才怪呢,匆匆一改就过了。

     1 // luogu-judger-enable-o2
     2 #include<iostream>
     3 #include<cstdio>
     4 using namespace std;
     5 unsigned long long m,f,a[10000],k=0;
     6 int main()
     7 {
     8     scanf("%lld%lld",&m,&f);
     9     //cin>>m>>f;
    10     for(int i=1;;i++)
    11     {
    12         a[++k]=f%m;
    13         f/=m;
    14         if(f==0) break;
    15         
    16     }
    17     printf("%lld 
    ",k);
    18     //cout<<k<<endl;
    19     for(int i=1;i<=k;i++)
    20     printf("%lld ",a[i]);
    21     //cout<<a[i]<<" ";
    22     return 0;
    23 }

      T2,T3,T4的题解小编后续也会加进来……

  • 相关阅读:
    Linux下的邮件发送
    Linux下用户和raid练习题
    Linux centos7.5操作系统的安装
    Linux chattr文件锁
    Linux系统下root密码丢失解决方案
    周总结2
    课堂作业1
    开课博客
    阅读3
    作业8
  • 原文地址:https://www.cnblogs.com/TFLS-gzr/p/10507066.html
Copyright © 2020-2023  润新知