zoukankan      html  css  js  c++  java
  • 题解【洛谷P5248】 [LnOI2019SP]快速多项式变换(FPT)

    题面:https://www.luogu.com.cn/problem/P5248

    这是一道数学题。

    在输入完后,我们先预处理处≤f(m)的所有m的次方,然后以次计算a0到an(n为≤f(m)的m的次方的最大指数),注意a0到an都不能≥m,开long long!!!

    最后,特判一下m>f(m)的情况就可以AC啦!

    附AC代码:

     1 #include <bits/stdc++.h> //万能头文件
     2 #define int long long    //把int都定义成 long long
     3 
     4 using namespace std; //使用标准名字空间
     5 
     6 inline int read() //快速读入
     7 {
     8     int f = 1, x = 0;
     9     char c = getchar();
    10 
    11     while (c < '0' || c > '9')
    12     {
    13         if (c == '-')
    14             f = -1;
    15         c = getchar();
    16     }
    17 
    18     while (c >= '0' && c <= '9')
    19     {
    20         x = x * 10 + c - '0';
    21         c = getchar();
    22     }
    23 
    24     return f * x;
    25 }
    26 
    27 int n, m, a[105], fm, S = 1, s[105], cnt = -1;
    28 
    29 signed main() //注意不能用int main(),因为我们已经在一开始把int都转换成了long long
    30 {
    31     m = read(), fm = read(); //读入m和f(m)
    32 
    33     if (m > fm) //特判m>f(m)的情况
    34     {
    35         printf("1
    %lld", fm); //直接输出1和f(m)
    36 
    37         return 0;
    38     }
    39 
    40     while (true) //预处理处所有≤f(m)的m的次方
    41     {
    42         if (S > fm) //如果已经比f(m)大了
    43         {
    44             break; //就退出
    45         }
    46         else
    47         {
    48             s[++cnt] = S; //否则记录下这个数
    49 
    50             S = S * m; //将它*m
    51         }
    52     }
    53 
    54     int b = fm; //b为f(m)的复制品
    55 
    56     a[++n] = fm % m; //预处理处a0(常数项)
    57 
    58     b = b - fm % m; //减去常数项
    59 
    60     for (register int i = 1; i <= cnt; i++)
    61     {
    62         a[++n] = (b / s[i]) % m; //依次计算每一位
    63     }
    64 
    65     printf("%lld
    ", n); //输出n
    66 
    67     for (register int i = 1; i <= n; i++)
    68     {
    69         printf("%lld ", a[i]); //输出a[i]
    70     }
    71 
    72     return 0; //结束
    73 }

     

  • 相关阅读:
    etcd基本操作
    使用docker配置etcd集群
    etcd启用https服务
    etcd3集群管理
    Opengl绘制我们的小屋(一)球体,立方体绘制
    OpenGL 用三角形模拟生成球面
    PDFSharp生成PDF.
    OpenXml操作Word的一些操作总结.无word组件生成word.
    F# 图形数学基础。
    SQL Server (MSSQLSERVER) 服务因 2148081668 服务性错误而停止。
  • 原文地址:https://www.cnblogs.com/xsl19/p/10506668.html
Copyright © 2011-2022 走看看