2020 年百度之星·程序设计大赛 - 初赛一Dec 简单dp
题意:
题解:
a,b范围1e3,那就dp解决问题,判断两个数是否互质用gcd就行
代码:
#include <cstdio> #include <algorithm> #include <iostream> #include <vector> #include <map> #include <queue> #include <set> #include <ctime> #include <cstring> #include <cstdlib> #include <math.h> using namespace std; typedef long long ll; typedef unsigned long long ull; const int maxn=1e3+10; const int eps=1e-6; int dp[maxn][maxn]; int gcd(int a, int b) { return !b?a:gcd(b,a%b); } int main() { for(int i = 1; i <= 1000; i++) { for(int j = 1; j <= 1000; j++) { dp[i][j] = max(dp[i-1][j]+(gcd(i,j)==1),dp[i][j-1]+(gcd(i,j)==1)); } } int T; scanf("%d",&T); while(T--) { int a, b; scanf("%d%d",&a,&b); printf("%d\n",dp[a][b]); } return 0; }