P1356 数列的整数性

Posted WeiAR

tags:

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

P1356 数列的整数性
打的骗分,在多组数据的情况下还能骗到分,可以了。又TMD是dp。
f[i][j]表示+-第i个数能否达到%p后的余数j,如果f[n][0]==true就可以。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<queue>
 4 #include<algorithm>
 5 #include<cmath>
 6 #include<ctime>
 7 #include<set>
 8 #include<cstring>
 9 #define inf INT_MAX
10 #define For(i,a,b) for(register int i=a;i<=b;i++)
11 #define p(a) putchar(a)
12 #define g() getchar()
13 
14 using namespace std;
15 int x;
16 bool f[10010][110];
17 int t;
18 int mod,n,sum;
19 
20 void in(int &x)
21 {
22     int y=1;
23     char c=g();x=0;
24     while(c<0||c>9)
25     {
26     if(c==-)
27     y=-1;
28     c=g();
29     }
30     while(c<=9&&c>=0)x=x*10+c-0,c=g();
31     x*=y;
32 }
33 void o(int x)
34 {
35     if(x<0)
36     {
37         p(-);
38         x=-x;
39     }
40     if(x>9)o(x/10);
41     p(x%10+0);
42 }
43 
44 int left(int x,int mod)
45 {
46     return (x%mod+mod)%mod;
47 }
48 
49 int main()
50 {
51     in(t);
52     while(t--)
53     {
54     memset(f,false,sizeof(f));
55     in(n),in(mod);
56     in(x);
57     f[1][left(x,mod)]=1;
58     f[1][left(-x,mod)]=1;
59     For(i,2,n)
60     {
61         in(x);
62         For(j,0,mod-1)
63         f[i][j]=f[i-1][left(j-x,mod)]|f[i-1][left(j+x,mod)];
64     }
65     if(f[n][0])
66     puts("Divisible");
67     else
68     puts("Not divisible");
69     }
70      return 0;
71 }

 

以上是关于P1356 数列的整数性的主要内容,如果未能解决你的问题,请参考以下文章

P1356 数列的整除性 递推,丝毫没dp的感觉

1049. 数列的片段和(20)

1049 数列的片段和 (20 分)

PAT 1049. 数列的片段和

B1049 数列的片段和

PAT-乙级-1049 数列的片段和