问题描述
输出格式
输出一行,输出一个整数,表示方程的整数解的个数。
样例输入
3 100 1 2 -1 2 1 2
样例输出
104
1 #include <stdio.h>
2 #include <string.h>
3 #include <iostream>
4 #include <string>
5 #include <math.h>
6 #include <algorithm>
7 #include <vector>
8 #include <stack>
9 #include <queue>
10 #include <set>
11 #include <map>
12 #include <sstream>
13 const int INF=0x3f3f3f3f;
14 typedef long long LL;
15 const int mod=1e9+7;
16 const double PI = acos(-1);
17 const double eps =1e-8;
18 #define Bug cout<<"---------------------"<<endl
19 const int maxn=1e5+10;
20 using namespace std;
21
22 int k[5],p[5];
23 int n,m,ans;
24 LL POW[150][5];//POW[i][j]表示i的j次方
25
26 void init()//打表
27 {
28 for(int i=1;i<=150;i++)
29 {
30 POW[i][0]=1;
31 for(int j=1;j<=4;j++)
32 {
33 POW[i][j]=i*POW[i][j-1];
34 }
35 }
36 }
37
38 void DFS(int step,LL sum)
39 {
40 if(step>n)
41 {
42 if(sum==0) ans++;
43 return ;
44 }
45 for(int i=1;i<=m;i++)
46 DFS(step+1,sum+k[step]*POW[i][p[step]]);
47 }
48
49 int main()
50 {
51 #ifdef DEBUG
52 freopen("sample.txt","r",stdin);
53 #endif
54 ios_base::sync_with_stdio(false);
55 cin.tie(NULL);
56
57 scanf("%d %d",&n,&m);
58 for(int i=1;i<=n;i++)
59 scanf("%d %d",&k[i],&p[i]);
60 init();//不要忘了
61 DFS(1,0);
62 printf("%d\n",ans);
63
64 return 0;
65 }
-
来源:https://www.cnblogs.com/jiamian/p/12174333.html