码迷,mamicode.com
首页 > 其他好文 > 详细

「LYOI2016 Summer」Digits 题解

时间:2017-10-13 20:09:24      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:c代码   else   res   logs   注意   --   text   turn   ++   

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

题目链接: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 题解

标签:c代码   else   res   logs   注意   --   text   turn   ++   

原文地址:http://www.cnblogs.com/shingen/p/7662726.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!