「LYOI2016 Summer」Digits 题解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了「LYOI2016 Summer」Digits 题解相关的知识,希望对你有一定的参考价值。

此文为博主原创题解,转载时请通知博主,并把原文链接放在正文醒目位置。

题目链接:https://ly.men.ci/problem/42

题目描述

给一个关于 x 的多项式,并给定一个 x,求该多项式在带入该 x 时的值最后 k 位数字。

输入格式

第一行两个整数 nk
之后的 n 行,每行两个数 ai,xi?i?? 和 bi b_i b?i??,表示多项式的一项 aixbi a_i x ^ {b_i} a?i??x?b?i????;
最后一行一个整数 x x x。

输出格式

输出 k行,按顺序输出该多项式带入 x 后值的最后 k 位数字,若不足 k 位,则高位补零。

样例

输入样例

2 1
3 2
1 5
3

输出样例

0
100% 100\%

分析:

快速幂然后暴力算即可。注意补零操作,另外这题的数据好像有问题,每个字符都要换行输出。

直接快速幂居然就过了...

我还想计算那么多次会不会有冗余,开了个数组记录x^i想直接调用,结果是我炸了...

 

AC代码:

 1 #include<cstdio>
 2 #include<algorithm>
 3 #include<cmath>
 4 #include<cstring>
 5 
 6 const int MAXN = 100003;
 7 inline void read(long long &x)
 8 {
 9     char ch = getchar(),c = ch;x = 0;
10     while(ch < 0 || ch > 9) c = ch,ch = getchar();
11     while(ch <= 9 && ch >= 0) x = (x<<1)+(x<<3)+ch-0,ch = getchar();
12     if(c == -) x = -x;
13 }
14 
15 long long n,k,x,tmp,ans,cnt = 1,mod = 1;
16 char s[20];
17 
18 struct NUM
19 {
20     long long a,b;
21 }num[MAXN];
22 
23 long long ksm(long long a,long long b)
24 {
25     long long base = a,r = 1;
26     for(;b;b>>=1)
27     {
28         if(b&1)
29             r = r*base%mod;
30         base = base*base%mod;
31     }
32     return r;
33 }
34 
35 int main()
36 {
37 //    freopen("1.in","r",stdin);
38     read(n),read(k);
39     for(register int i = 1;i <= n;++ i)
40         read(num[i].a),read(num[i].b);
41     for(register int i = 1;i <= k;++ i) 
42         mod *= 10;
43     read(x);
44     for(register int i = 1;i <= n;++ i)
45     {
46         tmp = ksm(x,num[i].b);
47         ans = (ans+tmp*num[i].a%mod)%mod;
48     }
49     tmp = 0;
50     if(ans == 0) s[++tmp] = 0;
51     else
52         while(ans > 0)
53         {
54             s[++tmp] = (ans%10)+0;
55             ans /= 10;
56         }
57     for(int i = 0;i < k-tmp;++ i)
58         printf("0\n");
59     for(int i = tmp;i >= 1;-- i)
60         printf("%c\n",s[i]);
61     return 0;
62 }

 

 
 
 
分】00% 的数据,1≤n≤100000,1≤ai,bi,x≤109,1≤k≤8 1 \leq n \leq 100000, 1 \leq a_i, b_i, x \leq 10 ^ 9, 1 \leq k \leq 8 1n100000,1a?i??,b?i??,x10?9??,1k

以上是关于「LYOI2016 Summer」Digits 题解的主要内容,如果未能解决你的问题,请参考以下文章

「LYOI2016 Summer」Graph 题解

LYOI2016 Summer 一次函数 (线段树)

「ZJU Summer Training 2020 - Round 2/3」部分补题记录

「ZJU Summer Training 2020 - Round 2/3」部分补题记录

[OI - 模拟考] LYOI2018模拟考N

SDKD 2017 Summer Single Training #03